Rijndael算法报错"要解密的数据的长度无效"

黄诚实 2012-01-18 03:23:16
调用解密方法的时候,报错"要解密的数据的长度无效",本人菜鸟,希望高手指点~

public static string Encrypt(string toEncrypt)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012");
byte[] toEncryptArray = System.Text.Encoding.UTF8.GetBytes(toEncrypt);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;

rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;

ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray,0,resultArray.Length);
//return UTF8Encoding.UTF8.GetString(resultArray);
// return Encoding.UTF8.GetString(resultArray);

}

public static string Decrypt(string toDecrypt)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012");
byte[] toEncryptArray = System.Text.Encoding.UTF8.GetBytes(toDecrypt);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;

ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

return UTF8Encoding.UTF8.GetString(resultArray);
}
...全文
176 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
黄诚实 2012-01-19
  • 打赏
  • 举报
回复
谢谢大师
NdscFaineant 2012-01-18
  • 打赏
  • 举报
回复
加密时return Convert.ToBase64String(resultArray,0,resultArray.Length);是转换成Base64字符串,
解密时要做反向的变换,从Base64字符串转换成字节。
黄诚实 2012-01-18
  • 打赏
  • 举报
回复
行了,谢谢,是啥原理
NdscFaineant 2012-01-18
  • 打赏
  • 举报
回复
byte[] toEncryptArray = System.Text.Encoding.UTF8.GetBytes(toDecrypt);
改为byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧