我正在尝试这个解密和加密的例子: http://msdn.microsoft.com/en-us/library/ms229740.aspx
当我只对先前加密的文件使用Decrypt方法时,我遇到错误:填充无效且无法删除
我试过这样:
Decrypt(xmlDoc, key);
Console.WriteLine("The element was decrypted");
Console.WriteLine(xmlDoc.InnerXml);
Decrypt
似乎首先没有Encypt
。
答案 0 :(得分:2)
某些en / decryption算法会接受你提供的任何内容,并为无效输入提供乱码,但其他算法根本不起作用。就是这种情况。
要使解密正常工作,输入必须采用解密算法所需的正确格式。加密通常会生成精确大小的加密数据块,如果未完成,则可以填充最后一个块(请参阅Block cipher)。
解密算法在您的代码中失败,因为它预期的填充是无效的,因为它首先没有加密。
编辑:
如果解密已加密文件时解密失败,请将Encrypt
应用于原始文件的结果与已加密的XML文件进行比较。可能有一个前导/尾随空格或换行字符会破坏算法。