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