AES加密方式有多种,下述代码为ECB模式,AES(256),pkcs7补全(补全方式根据实际情况而定)
Python3实现AES加密,需要安装pycryptodome第三方库。
安装方式:
pip install pycryptodome
代码:
from Crypto.Util.Padding import pad
from Crypto.Cipher import AES
def aes_cipher(key, aes_str):
# 使用key,选择加密方式
aes = AES.new(key.encode('utf-8'), AES.MODE_ECB)
pad_pkcs7 = pad(aes_str.encode('utf-8'), AES.block_size, style='pkcs7') # 选择pkcs7补全
encrypt_aes = aes.encrypt(pad_pkcs7)
# 加密结果
encrypted_text = str(base64.encodebytes(encrypt_aes), encoding='utf-8') # 解码
encrypted_text_str = encrypted_text.replace("\n", "")
# 此处我的输出结果老有换行符,所以用了临时方法将它剔除
return encrypted_text_str
if __name__ == '__main__':
# key的长度需要补长(16倍数),方法可以借鉴其它文章,补全方式根据情况而定,此处我手动以‘0’补全的32位
# key字符长度决定加密结果,16:AES(128),32:AES(256)
key = "ABCDEFGHIJKLMN000000000000000000"
# 加密字符串长同样需要16倍数,代码中pad()方法直接实现了
aes_str = "abc"
encryption_result = aes_cipher(key, aes_str)
print(encryption_result)