You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
21 lines
661 B
21 lines
661 B
3 years ago
|
# encoding:utf-8
|
||
|
from base64 import b64encode,b64decode
|
||
|
from Crypto.Util.Padding import pad,unpad
|
||
|
from Crypto.Cipher import AES
|
||
|
import consul_kv
|
||
|
secret_key = consul_kv.get_value('ConsulManager/assets/secret/skey')['sk'].encode('utf8')
|
||
|
|
||
|
def encrypt(data):
|
||
|
data = data.encode('utf8')
|
||
|
cipher = AES.new(secret_key, AES.MODE_CBC)
|
||
|
encrypted_data = cipher.encrypt(pad(data, 16))
|
||
|
data = cipher.iv + encrypted_data
|
||
|
return b64encode(data).decode('utf8')
|
||
|
|
||
|
def decrypt(data):
|
||
|
data = b64decode(data)
|
||
|
iv = data[:16]
|
||
|
cipher = AES.new(secret_key, AES.MODE_CBC, iv)
|
||
|
data = unpad(cipher.decrypt(data[16:]), 16)
|
||
|
return data.decode('utf8')
|