38
Golang里的AES、DES、3DES加解密,支持ECB、CBC等多种模式组合,兼容JAVA、PHP等语言
source link: https://www.tuicool.com/articles/NNvQn26
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Openssl encryption :OpenSSL库的功能包装,用于对称和非对称加密和解密。
- AES-ECB
- AES-CBC
- DES-ECB
- DES-CBC
- 3DES-ECB
- 3DES-CBC
安装
go get -u github.com/thinkoner/openssl
用法
AES
密钥的长度可以是16/24/32个字符(128/192/256位)。
AES-ECB:
src := []byte("123456") key := []byte("1234567890123456") dst , _ := openssl.AesECBEncrypt(src, key, openssl.PKCS7_PADDING) fmt.Printf(base64.StdEncoding.EncodeToString(dst)) // yXVUkR45PFz0UfpbDB8/ew== dst , _ = openssl.AesECBDecrypt(dst, key, openssl.PKCS7_PADDING) fmt.Println(string(dst)) // 123456
AES-CBC:
src := []byte("123456") key := []byte("1234567890123456") iv := []byte("1234567890123456") dst , _ := openssl.AesCBCEncrypt(src, key, iv, openssl.PKCS7_PADDING) fmt.Println(base64.StdEncoding.EncodeToString(dst)) // 1jdzWuniG6UMtoa3T6uNLA== dst , _ = openssl.AesCBCDecrypt(dst, key, iv, openssl.PKCS7_PADDING) fmt.Println(string(dst)) // 123456
DES
密钥的长度必须为8个字符(64位)。
DES-ECB:
openssl.DesECBEncrypt(src, key, openssl.PKCS7_PADDING) openssl.DesECBDecrypt(src, key, openssl.PKCS7_PADDING)
DES-CBC:
openssl.DesCBCEncrypt(src, key, iv, openssl.PKCS7_PADDING) openssl.DesCBCDecrypt(src, key, iv, openssl.PKCS7_PADDING)
3DES
密钥的长度必须为24个字符(192位)。
3DES-ECB:
openssl.Des3ECBEncrypt(src, key, openssl.PKCS7_PADDING) openssl.Des3ECBDecrypt(src, key, openssl.PKCS7_PADDING)
3DES-CBC:
openssl.Des3CBCEncrypt(src, key, iv, openssl.PKCS7_PADDING) openssl.Des3CBCDecrypt(src, key, iv, openssl.PKCS7_PADDING)
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK