python AES加密

from Crypto.Cipher import AES
import base64


def pkcs5padding_update(str_data):
    # pkcs5padding实际上是pkcs7padding
    block_size = 16  # 块大小,16字节 128位
    n = block_size - (len(str_data) % block_size)  # 计算出需要填充的字节数量,如果是n=16,则填充一个完整块
    n_value = chr(n)  # 根据填充数量n,返回n对应的ASCII 字符
    result_data = str_data + n * n_value  # 对齐数据
    return result_data


def aes_encrypt(key, data):
    if len(key) > 16:  # 密钥支持128 192 256的长度,这里限制了128位
        print("当前仅支持128位(16字节)的密钥,请修改密钥长度")
        return
    else:
        key = key + (16 - len(key) % 16) * '\0'  # 补足密钥长度为128位(16字节)
        byte_key = key.encode('utf-8')
    data = pkcs5padding_update(data)
    byte_data = data.encode('utf-8')
    cipher = AES.new(byte_key, AES.MODE_ECB)  # ECB模式
    encrypt_data = cipher.encrypt(byte_data)  # 加密数据
    base64_encrypt_data = base64.b64encode(encrypt_data)  # 输出base64的结果
    utf8_data = base64_encrypt_data.decode('utf-8')  # base64转换位utf8
    return utf8_data


if __name__ == '__main__':
    key = '123'
    data = """222222"""
    print(aes_encrypt(key, data))
posted @ 2021-05-18 00:06  NFTO  阅读(122)  评论(0)    收藏  举报