【发布时间】:2013-06-07 21:20:49
【问题描述】:
目前我使用 AES 并且有一个问题,如果用户选择解码未加密的文件,我的 prog 总是以异常结束,即使在 try catch 放置并用完调试器时也是如此。
public static byte[] AES_Decrypt(byte[] data, string[] aes_key)
{
RijndaelManaged aes = new RijndaelManaged();
aes.KeySize = 256;
aes.BlockSize = 256;
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
aes.Key = Encoding.Default.GetBytes(aes_key[0]);
aes.IV = Encoding.Default.GetBytes(aes_key[1]);
if (data.Length % (aes.BlockSize / 8) != 0)
return null;
var decrypt = aes.CreateDecryptor();
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, decrypt, CryptoStreamMode.Write))
try { cs.Write(data, 0, data.Length); } //crash here "data lenght for decryption is invalid" and "Padding is invalid and cannot be removed".
catch (Exception exc) { return null; }
return ms.ToArray();
}
}
我对为什么 try and catch 不起作用不感兴趣,我需要一些解决方法来避免崩溃……而且更改加密方法很好。
【问题讨论】:
标签: c# methods encryption-symmetric