ls před 4 roky
rodič
revize
9231c581f0
1 změnil soubory, kde provedl 9 přidání a 6 odebrání
  1. 9 6
      crypto.go

+ 9 - 6
crypto.go

@@ -8,16 +8,18 @@ import (
 
 var (
 	aesKey string
+	aesIV  string
 )
 
 // AesCrypto define
 type AesCrypto struct {
 	Key []byte
+	IV  []byte
 }
 
 // SetAesCryptoKey set key,
-// key length:16, 24, 32 bytes to AES-128, AES-192, AES-256
-func SetAesCryptoKey(password string) {
+// key/iv length:16, 24, 32 bytes to AES-128, AES-192, AES-256
+func SetAesCryptoKey(password, iv string) {
 	aesKey = password
 }
 
@@ -28,12 +30,13 @@ func GetAesCryptoKey() string {
 
 // NewAesCrypto new AesCrypto
 func NewAesCrypto() *AesCrypto {
-	return &AesCrypto{[]byte(aesKey)}
+	return &AesCrypto{Key: []byte(aesKey), IV: []byte(aesIV)}
 }
 
 // SetKey set key
-func (a *AesCrypto) SetKey(key string) {
+func (a *AesCrypto) SetKey(key, iv string) {
 	a.Key = []byte(key)
+	a.IV = []byte(iv)
 }
 
 // Encrypt encrypt data
@@ -45,7 +48,7 @@ func (a *AesCrypto) Encrypt(data []byte) ([]byte, error) {
 	blockSize := block.BlockSize()
 	data = pkcs5Padding(data, blockSize)
 
-	blockMode := cipher.NewCBCEncrypter(block, a.Key[:blockSize])
+	blockMode := cipher.NewCBCEncrypter(block, a.IV[:blockSize])
 	crypted := make([]byte, len(data))
 
 	blockMode.CryptBlocks(crypted, data)
@@ -59,7 +62,7 @@ func (a *AesCrypto) Decrypt(crypted []byte) ([]byte, error) {
 		return nil, err
 	}
 	blockSize := block.BlockSize()
-	blockMode := cipher.NewCBCDecrypter(block, a.Key[:blockSize])
+	blockMode := cipher.NewCBCDecrypter(block, a.IV[:blockSize])
 	origData := make([]byte, len(crypted))
 	blockMode.CryptBlocks(origData, crypted)
 	origData = pkcs5UnPadding(origData)