解密时出现问题了--填充无效,无法被移除。

linq-w 2010-05-29 03:29:07
 public static bool AESDecrypttoSingle(string filePath, string strKey)//(解密文件路径,解密密码)
{
string dir = Directory.GetParent(filePath).ToString();
SymmetricAlgorithm aes = Rijndael.Create();

FileStream fs = File.OpenRead(filePath);

aes.Key = Encoding.UTF8.GetBytes(strKey);
aes.IV = _key1;
byte[] decryptBytes = new byte[(int)fs.Length];
fs.Read(decryptBytes, 0, 1);
fs.Close();
MemoryStream ms = new MemoryStream(decryptBytes);
CryptoStream cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Read);

cs.Read(decryptBytes, 0, decryptBytes.Length);//填充无效,无法被移除。
cs.FlushFinalBlock();
fs.Close();
fs = File.OpenWrite(dir + "\\Encryption.txt");
foreach (byte b in ms.ToArray())
{
fs.WriteByte(b);

}
fs.Close();
cs.Close();
ms.Close();
return true;


}



求高手帮忙看看,“填充无效,无法被移除。”这句话怎么回事啊?单步我看不懂
...全文
4135 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjfire 2013-02-18
  • 打赏
  • 举报
回复
关键不在这里,是你调用这个函数的时候,传进来的解密密码有问题,你看看三楼说的那个网址,我就是根据那个解决的问题。
denbes 2012-10-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
不论是加密还是解密,都应该使用 CryptoStreamMode.Write,而不是Read!
[/Quote]
我试过,Read也可以在解密时使用。
但是,不知道什么原因,个别的解密无论是Write还是Read都是出现“填充无效,无法被移除”
纠结
Y251673671 2011-05-13
  • 打赏
  • 举报
回复
http://blog.csdn.net/Pipi0714/archive/2010/01/26/5256603.aspx
不知道他的问题和不和你的一样 我原来也是这个原因 导致用socket传过来就是 填充无效,无法被移除。
在同一个命名空间就没问题
  • 打赏
  • 举报
回复
不论是加密还是解密,都应该使用 CryptoStreamMode.Write,而不是Read!
一切为了你 2010-05-29
  • 打赏
  • 举报
回复
学习下 加密和解密啊!!

110,533

社区成员

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

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

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