【python】AES加密解密

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

key_hex = '2b7e151628aed2a6abf7158809cf4f3c'  # AES加密所使用的密钥(十六进制格式)
iv_hex = '000102030405060708090a0b0c0d0e0f'  # 初始化向量(十六进制格式)

def aes_encrypt(message):
    """
    使用AES加密算法对消息进行加密

    @param message: 需要加密的字符串
    @return: 加密后的字符串
    """
    key = binascii.unhexlify(key_hex)  # 将密钥从十六进制格式转换为二进制格式
    iv = binascii.unhexlify(iv_hex)  # 将初始化向量从十六进制格式转换为二进制格式
    cipher = AES.new(key, AES.MODE_CBC, iv)  # 创建AES加密对象,使用CBC模式和指定的密钥和向量
    ciphertext = cipher.encrypt(pad(message.encode(), AES.block_size))  # 对消息进行填充和加密
    ciphertext = base64.b64encode(ciphertext).decode('utf-8')  # 使用Base64编码处理加密结果
    print("加密前:", message, "加密后:", ciphertext)
    return ciphertext

def get_decrypt(message):
    """
    使用AES解密算法对加密后的消息进行解密

    @param message: 加密后的字符串
    @return: 解密后的字符串
    """
    key = binascii.unhexlify(key_hex)  # 将密钥从十六进制格式转换为二进制格式
    iv = binascii.unhexlify(iv_hex)  # 将初始化向量从十六进制格式转换为二进制格式
    cipher = AES.new(key, AES.MODE_CBC, iv)  # 创建AES解密对象,使用CBC模式和指定的密钥和向量
    plaintext = unpad(cipher.decrypt(base64.b64decode(message)), AES.block_size)  # 解密消息并去除填充
    decrypted = plaintext.decode()  # 将解密结果转换为字符串形式
    print("解密前:", message, "解密后:", decrypted)
    return decrypted
posted @ 2024-01-18 13:58  jijfurhg  阅读(240)  评论(0)    收藏  举报