看了下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加密后,再用hmac哈希一下,传输的时候,密文和哈希值一起传输,接收到数据后先对比哈希值,看看密文有没有别篡改?是这个意思吗?
加密有多种模式,对于AES加密而言,最常用的有CBC,GCM两种,其中GCM是一种AEAD)加密,同时满足了信息安全里面的“保密性C”和“完整性I”两个要求。
在golang里面,除了CBC,还提供了GCM模式,参考 go NewGCM,你看的应该是CBC模式,这种模式是不带认证的。