python对称加密AES的使用
aes安装
pip install pycryptodome
加密库引用
from Crypto.Util.Padding import pad, unpad
from Crypto.Cipher import AES
import base64
完整代码
from Crypto.Util.Padding import pad, unpad
from Crypto.Cipher import AES
import base64
def AES_encrypt(data, key):
# 密钥转换成bytes, 并补齐16位
# aes要求密钥和数据是16的倍数,不然加密会报错
key = pad(key.encode(), block_size=16)
# 创建aes对象
aes = AES.new(key, AES.MODE_ECB)
# 将原始数据转换成bytes,并补齐16位,aes要求数据是16的倍数,不然加密会报错
pad_data = pad(data.encode(encoding='utf-8'), block_size=16, style='pkcs7')
# 加密
encrypt_data = aes.encrypt(pad_data)
# 将加密bytes进行base64编码,并转换成字符串
encrypt_str = base64.encodebytes(encrypt_data).decode(encoding='utf-8')
return encrypt_str
def AES_decrypt(encrypt_data, key):
# 解密过程和加密过程相反
key = pad(key.encode(), block_size=16)
aes = AES.new(key, AES.MODE_ECB)
b64_data = base64.decodebytes(encrypt_data.encode(encoding='utf-8'))
# 解密
decrypt = aes.decrypt(b64_data)
# 去掉补齐位,并转换成字符串
decrypt_str = unpad(decrypt, block_size=16, style='pkcs7').decode(encoding='utf-8')
return decrypt_str
if __name__ == '__main__':
passwd = '1234567890'
src_data = 'python对称加密AES的使用'
encrypt_res = AES_encrypt(src_data, passwd)
print(encrypt_res)
src_data = AES_decrypt(encrypt_res, passwd)
print(src_data)
pass
测试结果
R1gH/LPQwUGZ+fZZcmAcsWuKfKRhgrVU0qhsB0tyLw0=
python对称加密AES的使用
参考
AEA加密解密知识参考