Ozz*_*zah 9 c# encryption rijndael encryption-symmetric rijndaelmanaged
我正在使用Rijndael来加密程序中的一些敏感数据.
当用户输入错误的密码时,大多数时候CryptographicException
会抛出一条消息"填充无效且无法删除".
但是,如果概率非常小,CryptStream不会使用错误的密码抛出异常,而是会返回错误解密的流.换句话说,它解密为垃圾.
知道如何检测/防止这种情况吗?我能想到的最简单的方法是在加密时在消息的开头添加一个"幻数",并在解密后检查它是否仍在那里.
但如果有更简单的方法,我很乐意听到它!
HMAC就是您所需要的.它正是为此目的而制作的.它结合了密钥和消息(在这种情况下,将是您的密码)并以确保内容的真实性和完整性的方式对它们进行哈希处理,只要使用的哈希函数是安全的.您可以将HMAC附加到加密数据,稍后可以使用它来验证解密是否正确.