AES加密后为什么要使用HMAC哈希进行验证?
aes加密后的hmac哈希
在go标准库中,对于aes加密有这样的提示:
// It's important to remember that ciphertexts must be authenticated // (i.e. by using crypto/hmac) as well as being encrypted in order to // be secure.
这是什么意思呢?
答案:
aes加密有多种模式,最常用的有cbc和gcm两种。cbc模式只提供保密性,而不提供完整性。gcm是一种aead(关联数据认证加密)加密,同时满足了保密性和完整性。在go中,可以通过newgcm来创建gcm加密器。
而你提到的代码示例可能是使用了cbc模式,因此需要在加密后再使用hmac哈希来进行完整性验证。所以在传输时,需要同时传输密文和哈希值。在接收方,需要先验证哈希值,以确保密文未被篡改。
以上就是AES加密后为什么要使用HMAC哈希进行验证?的详细内容,更多请关注其它相关文章!