要引入from Crypto.Cipher import AES
from Crypto.Util.Padding import pad ---------为了补充明文长度
需要执行pip install pycryptodome
在AES加密中 明文和密文都是bytes,且长度均为16的倍数
def enCrypt(request_num): key = b'qnbyzzwmdgghmcnm' pad_pkcs7 = pad(request_num.encode(), AES.block_size, style='pkcs7') aes = AES.new(key, AES.MODE_ECB) den_aes = aes.encrypt(pad_pkcs7) den_text = str(base64.encodebytes(den_aes), encoding='utf-8') den_text_str = den_text.replace("\n", "") return den_text_str
首先需要key(密钥),然后对明文进行补充,创建aes是创建一个AES加密对象,AES.MODE_ECB是AES加密的一种模式,den_aes则是加密明文的步骤,den_text则是解码,因为解码的结果含有换行符,进行替换,最后输出。
需要注意一点网站的AES加密有可能出现“/”,导致识别错误
要增加den_text_str = den_text_str.replace("/", "%")
具体情况具体分析。
在分析js的aes加密时可参考下图: