go的AES加密主要用crypto/aes
和crypto/cipher
两个库来实现。
AES加密模式又好多种,这里研究了6种模式:CBC、CFB、OFB、ECB、CTR、GCM模式。
一看到这么多模式,如果那里需要用到一下都不知道哪种好,这里大概总结一下。
如果数据通过非对称签名进行身份验证,则使用CBC,否则使用GCM。
最好的模式是GCM模式,GCM可以保证数据的保密性和完整性,其他模式只能保证保密性,不能保证完整性,具体可以去了解下AEAD。
GCM模式属于AEAD加密。
所以除了GCM模式之外其他模式最好是增加hmac哈希,用来验证数据完整性。
ECB模式不建议使用,因为这种模式不安全,go的内置库也没有去实现这种模式。
go AES 6种加密模式代码:https://github.com/ilaziness/gopkg/tree/main/crypto/aes
iv值的生成可以参考cfb模式的代码,每次加密都是随机生成的。
本文链接:https://360us.net/article/81.html