1. 程式人生 > 其它 >golang的aes, ecb加解密

golang的aes, ecb加解密

技術標籤:go

參考連結:https://www.cnblogs.com/techone/p/11771928.html

目錄

1.安裝庫

2.用法

2.1 AES

2.1.1 AES-ECB

2.1.2 AES-CBC

2.2 DES

2.2.1 DES-ECB

2.2.2 DES-CBC

2.3 3DES

2.3.1 3DES-ECB

2.3.2 3DES-CBC


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)