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