# -*- coding: utf-8 -*-
"""
@author: Mr_zhang
@software: PyCharm
@file: encryption.py
@time: 2023/3/23 10:00
"""
import json
import time
import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
class AesCrypt:
"""
Aes加解密
"""
def __init__(self):
self.key = "Key!@#$%Key!@#$%"
self.mode = AES.MODE_ECB
self.block_size = AES.block_size
self.pad = "pkcs7"
self.encoding = "utf-8"
def __aes_obj(self):
"""aes对象"""
key_bytes = self.key.encode(self.encoding)
return AES.new(key=key_bytes, mode=self.mode)
def encrypt(self, data):
"""
AES加密
:param data: 原始字符串
:return: 加密字符串
"""
_aes_obj = self.__aes_obj()
data_bytes = json.dumps(data).encode(self.encoding)
try:
cipher_base64_bytes = base64.b64encode(
_aes_obj.encrypt(pad(data_to_pad=data_bytes, block_size=self.block_size, style=self.pad)))
return True, cipher_base64_bytes.decode(self.encoding)
except Exception as e:
return False, e
def decrypt(self, data):
"""
AES解密
:param data: 待解密字符串
:return: 原始字符串
"""
_aes_obj = self.__aes_obj()
data_base64_bytes = data.encode(self.encoding)
try:
data_bytes = unpad(padded_data=_aes_obj.decrypt(base64.b64decode(data_base64_bytes)),
block_size=AES.block_size, style=self.pad)
return True, json.loads(data_bytes.decode(self.encoding))
except Exception as e:
return False, e
if __name__ == '__main__':
"""前后端交互,数据接口应加密"""
_data = {
"code": 200,
"count": 1,
"results": [
{"id": 1, "name": "张建平", "age": 26, "phone": 17343037825}
]
}
start_des_time = time.time()
print("=" * 20)
start_aes_time = time.time()
aes_obj = AesCrypt()
flag, encrypt = aes_obj.encrypt(_data)
print("加密后: ", encrypt)
if flag:
flag, decrypt = aes_obj.decrypt(encrypt)
print("解密后: ", decrypt)
print(time.time() - start_aes_time) # 0.0009999275207519531