想要确认一下我对解密的CryptographicException的想法。我有一些测试,恰好是一个错误的密码。这个测试抛出
System.Security.Cryptography.CryptographicException: Padding is invalid and cannot be removed.
我在寻找导致这种情况的原因。但是我找不到任何东西。它让我得出结论,一旦我使用错误的密码解密,我就得到了这个错误。
我是对的吗?
感谢您的任何评论。干杯,X。
答案 0 :(得分:2)
当使用填充并且密钥和IV不正确时,解密将在要删除填充时失败。这是因为在所有情况下,填充字节不符合所选择的PaddingMode。这样做的可能性很小,然后解密仍然会没有错误但结果会出现乱码。
但是,如果使用PaddingMode.None,那么您仍然可以无错误地解密数据(假设明文的长度是块大小的倍数),但数据将再次出现乱码。
总结:你不能依赖这样一个事实:如果使用了错误的密钥,你就会得到一个例外。您必须检查结果数据。