在公司的一部分产品中,有接口是使用AES 对称加解密方法来实现,并且采用ECB模式,padding PKCS5 的模式来实现接口的加密解密。
padding PKCS5的填充方法是根据块的大小默认是16,然后需要加密的明文长度除以16,不足16位字符串的补足到16的倍数,刚好是16的倍数也要补16位,然后补足的不是空格,而是差几位补充几位的Unicode值。
这里需要使用到base64位的编码,解码。
以下是针对某个接口的传参使用AES对称加密解密技术后,对该接口进行的测试,脚本如下:
#coding=utf-8
from base64 import b64decode
from base64 import b64encode
from Crypto.Cipher import AES
import base64
import json
import requests
# Padding for the input string --not
# related to encryption itself.
BLOCK_SIZE = 16 # Bytes
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * \
chr(BLOCK_SIZE - len(s) % BLOCK_SIZE)
unpad = lambda s: s[:-ord(s[len(s) - 1:])]
class AESCipher:
"""
Tested under Python 3.x and PyCrypto 2.6.1.
"""
def __init__(self, key):
#加密需要的key值
self.key=key
def encrypt(self, raw):