一,安装
win:
pip install pycryptodome
linux:
pip install pycrypto
二,AES - ECB模式
- 纯ecb,便于理解
import os
try:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
except:
os.system("pip install pycrypto")
os.system("pip install pycryptodome")
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
class AesUtils:
"""Aes[ECB]加解密"""
@staticmethod
def ecb_encrypt(mingwen: str, key: str):
"""ECB 加密"""
# 补足指定字节数 Padding
pad_key = pad(key.encode(), block_size=AES.key_size[2], style="pkcs7")
pad_mingwen = pad(mingwen.encode(), block_size=AES.block_size, style="pkcs7")
# 加密
obj = AES.new(pad_key, AES.MODE_ECB)
miwen = obj.encrypt(pad_mingwen)
return miwen
@staticmethod
def ecb_decrypt(miwen: bytes, key: str):
"""ECB 解密"""
# 解除加密时对key的补充
pad_key = pad(key.encode(), block_size=AES.key_size[2], style="pkcs7")
# 解密
obj = AES.new(pad_key, AES.MODE_ECB)
pad_mingwen = obj.decrypt(miwen)
# 解除加密时对明文的填充
mingwen = unpad(pad_mingwen, block_size=AES.block_size, style="pkcs7")
return mingwen.decode()
if __name__ == "__main__":
# 一个汉字两个字节
text = "我是需要加密的明文"
# Key 必须是16字节(*AES-128*), 24字节(*AES-192*),32字节(*AES-256*)
key = "abcdfeghijklmnop"
#####################################################################
# 加密过程中ÿ