3
每次我运行这个和加密,输出是可变的,当我试图解密 我得到“填充是无效的,不能被删除。”一直跟这一两天吵架,而我现在处于亏损状态。“填充无效且无法移除” - 此代码有什么问题?
private static string strIV = "abcdefghijklmnmo"; //The initialization vector.
private static string strKey = "abcdefghijklmnmoabcdefghijklmnmo"; //The key used to encrypt the text.
public static string Decrypt(string TextToDecrypt)
{
return Decryptor(TextToDecrypt);
}
private static string Encryptor(string TextToEncrypt)
{
//Turn the plaintext into a byte array.
byte[] PlainTextBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(TextToEncrypt);
//Setup the AES providor for our purposes.
AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider();
aesProvider.Key = System.Text.Encoding.ASCII.GetBytes(strKey);
aesProvider.IV = System.Text.Encoding.ASCII.GetBytes(strIV);
aesProvider.BlockSize = 128;
aesProvider.KeySize = 256;
aesProvider.Padding = PaddingMode.PKCS7;
aesProvider.Mode = CipherMode.CBC;
ICryptoTransform cryptoTransform = aesProvider.CreateEncryptor(aesProvider.Key, aesProvider.IV);
byte[] EncryptedBytes = cryptoTransform.TransformFinalBlock(PlainTextBytes, 0, PlainTextBytes.Length);
return Convert.ToBase64String(EncryptedBytes);
}
private static string Decryptor(string TextToDecrypt)
{
byte[] EncryptedBytes = Convert.FromBase64String(TextToDecrypt);
//Setup the AES provider for decrypting.
AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider();
aesProvider.Key = System.Text.Encoding.ASCII.GetBytes(strKey);
aesProvider.IV = System.Text.Encoding.ASCII.GetBytes(strIV);
aesProvider.BlockSize = 128;
aesProvider.KeySize = 256;
aesProvider.Padding = PaddingMode.PKCS7;
aesProvider.Mode = CipherMode.CBC;
ICryptoTransform cryptoTransform = aesProvider.CreateDecryptor(aesProvider.Key, aesProvider.IV);
byte[] DecryptedBytes = cryptoTransform.TransformFinalBlock(EncryptedBytes, 0, EncryptedBytes.Length);
return System.Text.Encoding.ASCII.GetString(DecryptedBytes);
}
}
这是解决我的问题的回应。每个人都很有帮助。我花了一段时间才意识到设置这些属性是依赖于顺序的。谢谢戴夫! – user274063 2010-02-16 06:19:21
本示例中使用的AesCryptoServiceProvider也实现了IDisposable,因为它是.NET中可用的非托管AES实现。建议使用说明。 – 2012-02-02 18:38:58
你刚刚救了我的一天。谢谢! – nrodic 2013-04-12 00:02:26