AES
(高级加密标准),是一种对称加密算法,由美国国家标准与技术研究院(NIST)于2001年发布,用于取代早期的DES加密算法,支持128位、192位和256位密钥长度,广泛应用于数据安全领域。
相比其他的对称加密如DES,由于DES密钥长度只有56位如今的算力甚至可以在5分钟内破解,而AES最高级别达到了256位密钥长度,如果采用穷举法,目前来看AES是一种”无法“被破解的加密存在。
不过在 Go 中通常需要使用crypto/aes
和crypto/cipher
包实现AES加密解密。
这里推荐一个开源的AES
加解密库,只需要一行代码即可快速完成加密或解密
该开源库托管于 Github : https://github.com/forgoer/openssl。并且这个库的和 PHP
JAVA
等主流语言的加密算法是一致的。
安装
这里使用go get
安装这个依赖库:
go get -u github.com/forgoer/openssl
加密
加密采用安装级别也就是AES-ECB-256
算法,只需要一行代码就可以实现:
package main
import (
"encoding/base64"
"fmt"
"github.com/forgoer/openssl"
)
func main() {
src := []byte("123456")
key := []byte("12345678901234561234567890123456")
dst, _ := openssl.AesECBEncrypt(src, key, openssl.PKCS7_PADDING)
fmt.Println(base64.StdEncoding.EncodeToString(dst)) // x0h/7JbwjwWsiZMRoZvb9g==
}
注意AES-ECB-256
需要加密的密钥的字符串长度为32
位,也就是256
bit位。并且这个示例输出是base64
编码之后的字符串,如果是和别的语言对接,请注意编码方式。
解密
解密也很简单,也是只需要一行代码:
package main
import (
"encoding/base64"
"fmt"
"github.com/forgoer/openssl"
)
func main() {
key := []byte("12345678901234561234567890123456")
data, _ := base64.StdEncoding.DecodeString("x0h/7JbwjwWsiZMRoZvb9g==")
dst, _ := openssl.AesECBDecrypt(data, key, openssl.PKCS7_PADDING)
fmt.Println(string(dst)) // 123456
}
最后
通过这个库,不需要太多的代码就可以方便地实现AES
加解密了。同时,它还支持DES
RSA
等多种方式加解密。