【发布时间】:2017-03-24 11:13:40
【问题描述】:
private static byte[] encryptData(ByteArrayOutputStream data, byte[] symmetricKey) throws EncryptionException {
try {
SecretKey secKey = new SecretKeySpec(symmetricKey, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secKey);
return cipher.doFinal(data.toByteArray());
} catch (NoSuchAlgorithmException | NoSuchPaddingException | IllegalBlockSizeException |
InvalidKeyException |
BadPaddingException e) {
throw new EncryptionException(e);
}
}
我有一种情况,我需要使用 .NET 加密数据并使用 JAVA 解密相同的数据。本质上,我需要在.NET中重写上述加密方法。
public byte[] Encrypt(byte[] key, byte[] plainText)
{
using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider())
{
using (ICryptoTransform encryptor = aesProvider.CreateEncryptor(key, magicIV))
{
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
cs.Write(plainText, 0, plainText.Length);
}
byte[] cipherText = ms.ToArray();
return cipherText;
}
}
}
}
我在某处使用的上述代码强制要求 JAVA 不要求的 IV。 JAVA代码中使用的IV是什么?
我尝试了许多无效的链接。 Symmetric Encryption between .NET and Java
请帮忙
【问题讨论】:
-
Stackoverflow 不是代码编写服务。像你这样的问题应该以太宽泛来结束。
-
你应该完全放弃上面的代码。它远非安全。
标签: java c# .net encryption encryption-symmetric