package utils import ( "crypto/cipher" "crypto/des" "encoding/base64" ) func DesBase64Decrypt(crypted []byte, desKey string) []byte { result, _ := base64.StdEncoding.DecodeString(string(crypted)) remain := len(result) % 8 if remain > 0 { mod := 8 - remain for i := 0; i < mod; i++ { result = append(result, 0) } } origData, err := TripleDesDecrypt(result, []byte(desKey)) if err != nil { panic(any(err)) } return origData } func TripleDesDecrypt(crypted, key []byte) ([]byte, error) { block, err := des.NewTripleDESCipher(key) if err != nil { return nil, err } blockMode := cipher.NewCBCDecrypter(block, key[:8]) origData := make([]byte, len(crypted)) blockMode.CryptBlocks(origData, crypted) origData = PKCS5UnPadding(origData) return origData, nil } func PKCS5UnPadding(origData []byte) []byte { length := len(origData) unpadding := int(origData[length-1]) return origData[:(length - unpadding)] }