如何验证AES解密是否成功?

时间:2017-05-25 13:25:16

标签: cryptography aes md5

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

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

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

这是个坏主意吗?

2 个答案:

答案 0 :(得分:4)

您还可以使用MAC验证您的解密。 MAC和Hash代码之间的主要区别是概念性的。哈希用于保证数据的完整性,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

答案 1 :(得分:-1)

我已经在很多帖子中读到MD5不再安全了,但是你将它用作校验和而不是会话ID或密码哈希。如果对MD5的攻击不是一个问题,因为它在加密代码中并且它没有被用作密码哈希,也没有用作会话ID,或类似的,我认为你可以使用它,但是如果你想要使用它安全方改变MD5用于SHA-2摘要。