暗号化されたバイト配列を復号化しようとしています (K1 で暗号化し、K2 で復号化します)。暗号化ストリームを閉じようとすると、Visual Studio が例外「BAD DATA」をスローする
これがDES復号化のコードスニペットです
public Byte[] Decrypt(Byte[] cipherData, Byte[] key, Byte[] iv)
{
MemoryStream ms = new MemoryStream();
DES mDES = DES.Create();
mDES.Key = key;
mDES.IV = iv;
mDES.Padding = PaddingMode.PKCS7;
CryptoStream cs = new CryptoStream(ms, mDES.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(cipherData, 0, cipherData.Length);
cs.Close();
Byte[] decryptedData = ms.ToArray();
return decryptedData;
}
初期ベクトルは暗号化と同じです。なぜこのエラーが発生したのかわかりません。
追加: Greg B の推奨に従って、暗号化のコード スニペットをここに投稿します。暗号化の出力は復号化の入力です (2 つの異なる鍵)
public Byte[] Decrypt(Byte[] cipherData, Byte[] key, Byte[] iv)
{
MemoryStream ms = new MemoryStream();
DES mDES = DES.Create();
mDES.Key = key;
mDES.IV = iv;
mDES.Padding = PaddingMode.PKCS7;
CryptoStream cs = new CryptoStream(ms, mDES.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(cipherData, 0, cipherData.Length);
cs.Close();
Byte[] decryptedData = ms.ToArray();
return decryptedData;
}