AES的padding应该怎么填充,PKCS5的填充就是块的大小默认是16,然后需要加密的明文长度除以这个,不足的补足到16的倍数,刚好是16的倍数也要补16位,然后补足的不是空格,而是差几位补充几位的Unicode值
from Crypto.Util.Padding import pad
from Crypto.Cipher import AES
import base64
#下边是基本的加密方法
#aes_str是要加密的字符串
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)
完整代码:
# 如果包装不了 就按照下面2个步骤
# pip uninstall crypto pycryptodome
# pip install pycryptodome
from Crypto.Util.Padding import pad
from Crypto.Cipher import AES
import base64
class PrpCrypt(object):
def __init__(self):
self.unpad = lambda date: date[0:-ord(date[-1])]
def aes_cipher(self, 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)
# 加密结果