如何验证AES解密成功?

ooo*_*o0o 0 md5 cryptography aes

我正在开发一个本地文件加密/解密软件 (AES-256 CBC),我想验证解密是否成功。

所以我决定在普通数据的末尾添加一个额外的明文数据的MD5哈希值并一起加密,解密时,计算解密数据的MD5哈希值(最后一个附加的MD5哈希值除外)并将其与最后一个附加的MD5哈希值进行比较。

我想知道这个想法是否可以安全使用。

这是一个坏主意吗?

Sye*_*med 5

您还可以使用 MAC 来验证您的解密。MAC 和哈希码之间的主要区别是概念上的。散列用于保证数据的完整性,MAC 保证完整性和身份验证。

这意味着哈希码是从消息中盲目生成的,没有任何类型的外部输入:您获得的是可用于检查消息在传输过程中是否有任何更改的东西。

MAC 改为使用私钥作为它在生成代码时使用的哈希函数的种子:这应该向接收者保证,不仅消息没有被修改,而且发送它的人也是我们所期望的:否则攻击者无法知道用于生成代码的私钥。

Cryptographic primitive | Hash |    MAC    | Digital
Security Goal           |      |           | signature
------------------------+------+-----------+-------------
Integrity               |  Yes |    Yes    |   Yes
Authentication          |  No  |    Yes    |   Yes
Non-repudiation         |  No  |    No     |   Yes
------------------------+------+-----------+-------------
Kind of keys            | none | symmetric | asymmetric
                        |      |    keys   |    keys
Run Code Online (Sandbox Code Playgroud)