【发布时间】:2011-06-29 10:30:10
【问题描述】:
我有我想在 C# 中使用的预生成的 AES 密钥。谁能指出我正确的方向如何使用预生成的 AES 密钥和RijndaelManaged 对象。
编辑:我在byte[] 数组中有密钥,我需要加密Stream。
我在网上找到了这些代码示例:
private static byte[] Decrypt(byte[] key, byte[] PGPkey)
{
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = key;
//rDel.Mode = CipherMode.ECB; // http://msdn.microsoft.com/en-us/library/system.security.cryptography.ciphermode.aspx
rDel.Padding = PaddingMode.PKCS7; // better lang support
ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(PGPkey, 0, PGPkey.Length);
return resultArray;
}
private static byte[] Encrypt(byte[] key, byte[] PGPkey)
{
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = key;
//rDel.Mode = CipherMode.ECB; // http://msdn.microsoft.com/en-us/library/system.security.cryptography.ciphermode.aspx
rDel.Padding = PaddingMode.PKCS7; // better lang support
ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(PGPkey, 0, PGPkey.Length);
return resultArray;
}
我没有收到任何错误,但解密后的字节数组与进行加密之前的不同。
编辑:我想我成功了,必须设置 rDel.Mode = CipherMode.ECB;
【问题讨论】:
-
你有什么形式的密钥,你的预生成是什么意思?
-
@V4Vendetta,我在 byte[] 数组中有密钥。
-
你需要完整性检查吗?
-
不,我不需要完整性检查。
-
不要使用欧洲央行。 CBC 更适合您的使用。您的问题很可能是由于未将 IV 与您的加密数据一起存储。
标签: c# security cryptography aes