C# AES加密解密 解密时弹出“要解密的数据的长度无效。”的问题
夜丿十三 2017-08-01 01:34:23 最近研究C#的AES加密解密,目前加密没有问题,但是解密时总是弹出“要解密的数据的长度无效。”的问题。请大神们看看原因在哪。谢谢。
private void button1_Click(object sender, EventArgs e) //加密
{
string clearText = textBox1.Text.Trim(); //待加密的字符串
byte[] clearBytes = Encoding.ASCII.GetBytes(clearText);
using (var encryptor = RijndaelManaged.Create())
{
encryptor.KeySize = 128;
encryptor.Padding = PaddingMode.Zeros;
encryptor.Mode = CipherMode.CFB;
encryptor.Key = Encoding.ASCII.GetBytes("01234567891234560123456789123456");
encryptor.IV = Encoding.ASCII.GetBytes("0123456789123456");
using (MemoryStream Memory = new MemoryStream())
{
using (CryptoStream Encryptor = new CryptoStream(Memory, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
{
Encryptor.Write(clearBytes, 0, clearBytes.Length);
//Encryptor.Close();
Encryptor.FlushFinalBlock();
}
Array.Copy(Memory.ToArray(), clearBytes, clearBytes.Length);
clearText = Convert.ToBase64String(clearBytes);
}
}
textBox2.Text = clearText;
}
private void button2_Click(object sender, System.EventArgs e) //解密
{
string clearText = textBox2.Text.Trim(); //待解密的字符串
byte[] clearBytes = Encoding.ASCII.GetBytes(clearText);
using (var decryptor = RijndaelManaged.Create())
{
decryptor.KeySize = 128;
decryptor.Padding = PaddingMode.Zeros;
decryptor.Mode = CipherMode.CFB;
decryptor.Key = Encoding.ASCII.GetBytes("01234567891234560123456789123456");
decryptor.IV = Encoding.ASCII.GetBytes("0123456789123456");
using (MemoryStream Memory = new MemoryStream(clearBytes)) // 开辟一块内存流,存储密文
{
using (CryptoStream Decryptor = new CryptoStream(Memory, decryptor.CreateDecryptor(), CryptoStreamMode.Read)) // 把内存流对象包装成加密流对象
{
using (MemoryStream originalMemory = new MemoryStream()) // 明文存储区
{
Byte[] Buffer = new Byte[1024];
Int32 readBytes = 0;
while ((readBytes = Decryptor.Read(Buffer, 0, Buffer.Length)) > 0)
{
originalMemory.Write(Buffer, 0, readBytes);
}
}
}
Array.Copy(Memory.ToArray(), clearBytes, clearBytes.Length);
clearText = Convert.ToBase64String(clearBytes);
}
textBox4.Text = clearText;
}
}
跳出问题的语句已经标红。