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;
}
}
}
}
Вышеупомянутый код, который я использовал где-то, имеет мандаты IV, которые JAVA не просит. Что такое IV, используемый в JAVA-коде?
Я пробовал много ссылок, которые не работали. Symmetric Encryption between .NET and Java
Пожалуйста, помогите
Stackoverflow не является кодовым письмом. Такие вопросы, как ваш, должны быть закрыты как * слишком широкие *. –
Возможно, вы должны полностью удалить вышеуказанный код. Это далеко не безопасно. –