我正在开发一个本地文件加密/解密软件(AES-256 CBC),我想验证解密是否成功。
因此,我决定添加一个普通数据的附加MD5哈希,并将其加密到一起,在解密时,计算解密数据的MD5哈希(上一次附加MD5哈希除外),并将其与最后附加的MD5哈希进行比较。
我想知道这个想法是否安全。
这是个坏主意吗?
发布于 2017-05-26 07:38:34
您要做的是所谓的认证加密,即加密和身份验证在on方案中的结合。
它最简单的形式是分别进行加密和身份验证,或者通过验证纯文本(Mac然后加密或Mac加加密),或者反过来进行验证:首先加密,然后计算密文上的校验和。这三种变体都没有本质上的不安全,但现在的后一种版本是被认为最安全,而且它也是最容易纠正的。
需要注意的是,你不应该像你建议的那样计算一个散列,而是一个MAC (比如HMAC- that 256),这是不能被对手伪造的。单靠散列只保护消息的完整性,帮助您避免错误,而不是防范攻击者。
此外,还有加密模式,将加密和身份验证结合在一个操作中。如果您没有特定的理由坚持AES-CBC,这些模式将是首选的。这些模式中最流行的是AES-GCM,其他选项包括AES-CCM、AES-OCB或Cha20-Poly1305。
https://crypto.stackexchange.com/questions/47721
复制相似问题