|
@@ -5,6 +5,7 @@ import (
|
|
|
"crypto/aes"
|
|
|
"crypto/cipher"
|
|
|
"encoding/base64"
|
|
|
+ "encoding/hex"
|
|
|
)
|
|
|
|
|
|
type AES_CBC struct {
|
|
@@ -13,10 +14,26 @@ type AES_CBC struct {
|
|
|
}
|
|
|
|
|
|
func (a AES_CBC) Encrypt(value string) (string, error) {
|
|
|
+ b, err := a.encrypt(value)
|
|
|
+ if err != nil {
|
|
|
+ return "", err
|
|
|
+ }
|
|
|
+ return base64.StdEncoding.EncodeToString(b), nil
|
|
|
+}
|
|
|
+
|
|
|
+func (a AES_CBC) EncryptHex(value string) (string, error) {
|
|
|
+ b, err := a.encrypt(value)
|
|
|
+ if err != nil {
|
|
|
+ return "", err
|
|
|
+ }
|
|
|
+ return hex.EncodeToString(b), nil
|
|
|
+}
|
|
|
+
|
|
|
+func (a AES_CBC) encrypt(value string) ([]byte, error) {
|
|
|
origData := []byte(value)
|
|
|
block, err := aes.NewCipher([]byte(a.Key))
|
|
|
if err != nil {
|
|
|
- return "", err
|
|
|
+ return nil, err
|
|
|
}
|
|
|
blockSize := block.BlockSize()
|
|
|
origData = a.PKCS5Padding(origData, blockSize)
|
|
@@ -25,11 +42,20 @@ func (a AES_CBC) Encrypt(value string) (string, error) {
|
|
|
crypted := make([]byte, len(origData))
|
|
|
|
|
|
blockMode.CryptBlocks(crypted, origData)
|
|
|
- return base64.StdEncoding.EncodeToString(crypted), nil
|
|
|
+ return crypted, nil
|
|
|
}
|
|
|
|
|
|
func (a AES_CBC) Decrypt(crypted string) (string, error) {
|
|
|
decodeData, err := base64.StdEncoding.DecodeString(crypted)
|
|
|
+ return a.decrypt(decodeData, err)
|
|
|
+}
|
|
|
+
|
|
|
+func (a AES_CBC) DecryptHex(crypted string) (string, error) {
|
|
|
+ decodeData, err := hex.DecodeString(crypted)
|
|
|
+ return a.decrypt(decodeData, err)
|
|
|
+}
|
|
|
+
|
|
|
+func (a AES_CBC) decrypt(decodeData []byte, err error) (string, error) {
|
|
|
if err != nil {
|
|
|
return "", err
|
|
|
}
|