“填充无效,无法删除”

时间:2013-12-05 03:37:27

标签: c# xml encryption

我正在尝试这个解密和加密的例子: 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

1 个答案:

答案 0 :(得分:2)

某些en / decryption算法会接受你提供的任何内容,并为无效输入提供乱码,但其他算法根本不起作用。就是这种情况。

要使解密正常工作,输入必须采用解密算法所需的正确格式。加密通常会生成精确大小的加密数据块,如果未完成,则可以填充最后一个块(请参阅Block cipher)。

解密算法在您的代码中失败,因为它预期的填充是无效的,因为它首先没有加密。

编辑:

如果解密已加密文件时解密失败,请将Encrypt应用于原始文件的结果与已加密的XML文件进行比较。可能有一个前导/尾随空格或换行字符会破坏算法。