wangchuanjin %!s(int64=3) %!d(string=hai) anos
pai
achega
104710ef55
Modificáronse 1 ficheiros con 28 adicións e 2 borrados
  1. 28 2
      src/qfw/util/aes.go

+ 28 - 2
src/qfw/util/aes.go

@@ -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
 	}