Package Mainimport ("Crypto/aes" "Crypto/cipher" "Errors") Type Connaesstruct{KeystringKeyblock cipher. Block IVstring}func Newconnaes (Keystring, IVstring) (ca connaes, err error) {ifLen (iv)! =AES. BlockSize {returnCA, errors. New ("Error IV size not")} Ca.key=Key Ca.iv=IV Ca.keyblock, err= AES. Newcipher ([]byte(key))returnCA, err}//EncryptFunc (ca *connaes) Encrypt (src []byte) ([]byte, error) {paddinglen:= AES. BlockSize-(len (SRC)%AES. BlockSize) forI: =0; i < Paddinglen; i++{src= Append (src,byte(Paddinglen))} ENBUF:= Make ([]byte, Len (src)) CBCE:= Cipher. Newcbcencrypter (Ca.keyblock, []byte(iv)) CBCE. Cryptblocks (enbuf, SRC)returnenbuf, nil}//decryptionFunc (ca *connaes) Decrypt (src []byte) ([]byte, error) { if(Len (SRC) < AES. BlockSize) | | (Len (SRC)%aes. BlockSize! =0) { returnNil, errors. New ("Error encrypt data size")} debuf:= Make ([]byte, Len (src)) CBCD:= Cipher. Newcbcdecrypter (Ca.keyblock, []byte(iv)) CBCD. Cryptblocks (debuf, src) Paddinglen:=int(Debuf[len (SRC)-1]) ifPaddinglen > - { returnNil, errors. New ("Error encrypt data size") } returnDebuf[:len (SRC)-Paddinglen], nil}
Familiarize yourself with the AES encryption library for Go