golang的aes, ecb加解密
阿新 • • 發佈:2020-12-31
技術標籤:go
參考連結:https://www.cnblogs.com/techone/p/11771928.html
目錄
1.安裝庫
golang裡面封裝有加解密庫,安裝
go get -u github.com/thinkoner/openssl
安裝好後,使用時直接加上
import "github.com/thinkoner/openss"
OpenSSL庫的功能包裝,用於對稱和非對稱加密和解密。
- AES-ECB
- AES-CBC
- DES-ECB
- DES-CBC
- 3DES-ECB
- 3DES-CBC
2.用法
2.1 AES
2.1.1 AES-ECB
金鑰的長度可以是16/24/32個字元(128/192/256位)
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
2.1.2 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
2.2 DES
金鑰的長度必須為8個字元(64位)
2.2.1 DES-ECB
openssl.DesECBEncrypt(src, key, openssl.PKCS7_PADDING)
openssl.DesECBDecrypt(src, key, openssl.PKCS7_PADDING)
2.2.2 DES-CBC
openssl.DesCBCEncrypt(src, key, iv, openssl.PKCS7_PADDING)
openssl.DesCBCDecrypt(src, key, iv, openssl.PKCS7_PADDING)
2.3 3DES
金鑰的長度必須為24個字元(192位)。
2.3.1 3DES-ECB
openssl.Des3ECBEncrypt(src, key, openssl.PKCS7_PADDING)
openssl.Des3ECBDecrypt(src, key, openssl.PKCS7_PADDING)
2.3.2 3DES-CBC
openssl.Des3CBCEncrypt(src, key, iv, openssl.PKCS7_PADDING)
openssl.Des3CBCDecrypt(src, key, iv, openssl.PKCS7_PADDING)