我基于此编写了一对 AES 加密/解密函数 example .
它工作得很好,直到我将错误的 key 或 IV 传递到我的解密函数中,此时我得到“填充无效且无法删除”。其他人已经讨论过的 CryptographicException。
我的问题是:是否有某种方法可以在异常发生之前验证 key /IV?也许某种校验和?或者只是捕获该异常的答案?
最佳答案
答案只是捕获异常。 IV 通常与加密消息一起发送,因此单独验证它没有什么意义。对于 key ,检查 key 值的常规方法是使用 KCV( key 检查值):
在这里查看 Poncho 对我的问题的回答:
https://crypto.stackexchange.com/questions/1930/sending-kcv-key-check-value-with-cipher-text
基本上,似乎不值得。当然,您的里程可能会有所不同。另一方面,向加密消息添加某种身份验证总是很有意义,但它仍然不会向您显示数据是否已损坏或被篡改,或者您的 key 是否错误......
关于.net - 使用 AesManaged 解密之前验证 key /IV ?或者在 CryptographicException 发生之前避免它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9948586/