Tag: encryption

Java TripleDESCryptoServiceProvider等效于Java

拜托,请不要问我为什么。 我只是在.NET中使用此代码来加密/解密数据字符串。 我现在需要在java中制作“完全”相同的function。 我已经为DESede crypt尝试了几个例子,但它们都没有给出与.net中这个类相同的结果。 我甚至在ssl后面制作一个.net webserbvice来服务于.net写的这两种方法但是如果不用尽所有的可能性就太愚蠢了。 也许你们中的一些在这个领域更有相关性的java人将会在你们的头脑中如何制作它。 谢谢 !!! public class Encryption { private static byte[] sharedkey = {…}; private static byte[] sharedvector = {…}; public static String Decrypt(String val) { TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); byte[] toDecrypt = Convert.FromBase64String(val); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, tdes.CreateDecryptor( sharedkey, sharedvector ), […]

使用C#加密AES以匹配Java加密

我已经获得了加密的Java实现,但不幸的是我们是一个.net商店,我无法将Java整合到我们的解决方案中。 可悲的是,我也不是一个爪哇人,所以我已经和它斗争了几天,并且以为我终于转到这里求助了。 我已经搜索了高低,以寻找与Java加密工作方式相匹配的方法,并且我已经达到了在c#中使用RijndaelManaged所需的分辨率。 我其实很亲密。 我在c#中返回的字符串与前半部分匹配,但后半部分不同。 这是java实现的一个片段: private static String EncryptBy16( String str, String theKey) throws Exception { if ( str == null || str.length() > 16) { throw new NullPointerException(); } int len = str.length(); byte[] pidBytes = str.getBytes(); byte[] pidPaddedBytes = new byte[16]; for ( int x=0; x<16; x++ ) { if ( x […]

c#和java – hmacsha256哈希之间的区别

我在Java中有以下代码: byte[] secretKey = secretAccessKey.getBytes(“UTF-8”); SecretKeySpec signingKey = new SecretKeySpec(secretKey, “HmacSHA256”); Mac mac = Mac.getInstance(“HmacSHA256”); mac.init(signingKey); byte[] bytes = data.getBytes(“UTF-8”); byte[] rawHmac = mac.doFinal(bytes); String result = javax.xml.bind.DatatypeConverter.printBase64Binary(rawHmac); 以及C#中的以下代码: UTF8Encoding enc = new UTF8Encoding(); byte[] secretKey = enc.GetBytes(secretAccessKey); HMACSHA256 hmac = new HMACSHA256(secretKey); hmac.Initialize(); byte[] bytes = enc.GetBytes(data); byte[] rawHmac = hmac.ComputeHash(bytes); string result = […]

使用C#进行AES加密和使用Java进行解密

我只想确认我对AES如何工作的理解。 如果公司#1正在加密数据,并将此数据发送到公司#2进行解密,那么我们假设其中一个使用C#和另一个Java。 只要两者都使用相同的共享密钥,是否有任何其他设置/配置明智的双方应该同意确保数据正确加密和解​​密?

Java和C#之间的加密差异

嗨,我想弄清楚如何复制在C#中完成的文本的加密,但在Java中。 代码的一部分仍然困扰着我,似乎无法找到答案,这是在C#: PasswordDeriveBytes myPass = new PasswordDeriveBytes(String Password, byte[] Salt); Trp.Key = myPass.GetBytes(24); Trp.IV = myPass.GetBytes(8); 基本上什么相当于Java中的这段代码? 更新:使用提供的PasswordDeriveBytes代码(第二个代码段),我能够完美地复制C#代码。 谢谢Maarten Bodewes。 BASE64Encoder base64 = new BASE64Encoder(); PasswordDeriveBytes i_Pass = new PasswordDeriveBytes(passWord, saltWordAsBytes); byte[] keyBytes = i_Pass.getBytes(24); byte[] ivBytes = i_Pass.getBytes(8); Cipher c3des = Cipher.getInstance(“DESede/CBC/PKCS5Padding”); SecretKeySpec myKey = new SecretKeySpec(keyBytes, “DESede”); IvParameterSpec ivspec = new IvParameterSpec(ivBytes); c3des.init […]

来自CA的PKCS12 Java密钥库和java中的用户证书

我最近负责用Java模拟Apple产品(iPhone配置实用程序)。 我一直有点困惑的部分之一是关于Exchange ActiveSync的一部分。 在那里,它允许您从钥匙串中选择一个证书作为您的EAS帐户的凭据。 经过一些研究,我发现它实际上是在创建一个PKCS12密钥库,插入我选择的证书的私钥,并将其编码为XML。 到目前为止还没什么大不了的。 如果我使用Keychain Access创建一个.p12文件,它上传没有问题。 但是当我尝试将其转移到Java时,我遇到了一个问题。 假设我将之前使用过的.s12文件中的一个作为.cer文件导出(这是我们期望在环境中获得的)。 现在当我将它上传到Java时,我得到一个Certificate对象如下… KeyStore ks = java.security.KeyStore.getInstance(“PKCS12”); ks.load(null, “somePassword”.toCharArray()); CertificateFactory cf = CertificateFactory.getInstance(“X.509”, new BouncyCastleProvider()); java.security.cert.Certificate userCert = cf.generateCertificate(new FileInputStream(“/Users/me/Desktop/RecentlyExportedCert.cer”)); 但是当我尝试…… ks.setCertificateEntry(“SomeAlias”, userCert); 我得到例外…… java.security.KeyStoreException: TrustedCertEntry not supported 所以从证书我转移到键。 但是使用这些证书(我也获得了CA证书),我只能访问公钥,而不是私钥。 如果我试图像这样添加公钥… java.security.cert.Certificate[] chain = {CACert}; ks.setKeyEntry(“SomeAlias”, userCert.getPublicKey().getEncoded(), chain); 我明白了…… java.security.KeyStoreException: Private key is not stored as PKCS#8 […]