Python 实现AES加密、解密

摘要1:python 利用Crypto进行AES解密&加密文件 - 简书

摘要2:python实现AES加密、解密 - 一只小羊 - 博客园

1、pad和unpad分别是填充函数和逆填充函数。因为AES加密对加密文本有长度要求,必须是密钥字节数的倍数。这里的encryptKey在经过base64解码后的长度是16个字节。
2、实际上AES加密有AES-128、AES-192、AES-256三种,分别对应三种密钥长度128bits(16字节)、192bits(24字节)、256bits(32字节)。当然,密钥越长,安全性越高,加解密花费时间也越长。默认的是AES-128,其安全性完全够用。

加密示例:

import json

import base64
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
from Crypto.Util.Padding import pad, unpad

new_data = {
    "helper": "hj-344ab346657",
    "timestamp": 1648523522,
    "sign": "12400"
}
str_s = json.dumps(new_data)


def encrypt(data, password):
    key = password.encode('utf-8')
    mode = AES.MODE_ECB
    cryptos = AES.new(key, mode)
    msg = cryptos.encrypt(pad(data, 16))

    return msg


str_d = str_s.encode('utf-8')
secret_key = "sdfoshffehhhhhsfis779ff"
encrypt_data = encrypt(str_d, secret_key)
encrypt_data = base64.b64encode(encrypt_data)
print('encrypt_data:', encrypt_data)

你可能感兴趣的:(python,python)