package utils import ( "bytes" "crypto/cipher" "crypto/des" "encoding/base64" ) // des3 + base64 encrypt func DesBase64Encrypt(origData []byte, desKey string) []byte { result, err := TripleDesEncrypt(origData, []byte(desKey)) if err != nil { panic(any(err)) } return []byte(base64.StdEncoding.EncodeToString(result)) } // 3DES加密 func TripleDesEncrypt(origData, key []byte) ([]byte, error) { block, err := des.NewTripleDESCipher(key) if err != nil { return nil, err } origData = PKCS5Padding(origData, block.BlockSize()) // origData = ZeroPadding(origData, block.BlockSize()) blockMode := cipher.NewCBCEncrypter(block, key[:8]) crypted := make([]byte, len(origData)) blockMode.CryptBlocks(crypted, origData) return crypted, nil } func PKCS5Padding(ciphertext []byte, blockSize int) []byte { padding := blockSize - len(ciphertext)%blockSize padtext := bytes.Repeat([]byte{byte(padding)}, padding) return append(ciphertext, padtext...) }