我正在开发本地文件加密/解密软件(AES-256 CBC), 我想验证解密是否成功。
所以我决定将普通数据的额外MD5哈希添加到普通数据的末尾并一起加密, 并且在解密时,计算解密数据的MD5哈希值(除了最后一个额外的MD5哈希)和 将它与上一个额外的MD5哈希进行比较。
我想知道这个想法是否可以安全使用。
这是个坏主意吗?
答案 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摘要。