0
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中重寫上述加密方法。c#中的對稱加密類似於JAVA
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不要求。 JAVA代碼中使用的IV是什麼?
我嘗試了很多不起作用的鏈接。 Symmetric Encryption between .NET and Java
請幫
Stackoverflow不是代碼編寫服務。您的這些問題應該以*太寬*來結束。 –
你應該完全拋棄上面的代碼。這遠非安全。 –