A-A+

python 编写 AES/ECB/PKCS7Padding 详细的加密解密脚本示例代码

2022年12月18日 16:25 学习笔记 暂无评论 共822字 (阅读58 views次)

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】

闲来无事,训练训练OpenAI玩玩,越训练越智能,还真的是厉害。

import base64
from Cryptodome.Cipher import AES

def pkcs7padding(data):
    """使用PKCS7Padding填充数据"""
    bs = AES.block_size
    padding = bs - len(data) % bs
    padding_text = bytes([padding] * padding)
    return data + padding_text

def pkcs7unpadding(data):
    """使用PKCS7Padding删除填充数据"""
    n = data[-1]
    return data[:-n]

def encrypt(key, plaintext):
    """使用AES / ECB / PKCS7Padding加密数据"""
    plaintext = pkcs7padding(plaintext)
    cipher = AES.new(key, AES.MODE_ECB)
    return base64.b64encode(cipher.encrypt(plaintext)).decode("utf-8")

def decrypt(key, ciphertext):
    """使用AES / ECB / PKCS7Padding解密数据"""
    ciphertext = base64.b64decode(ciphertext)
    cipher = AES.new(key, AES.MODE_ECB)
    plaintext = cipher.decrypt(ciphertext)
    return pkcs7unpadding(plaintext).decode("utf-8")

# 示例使用
key = b"1234567890abcdef"  # 密钥,必须是16,24或32位
plaintext = "Hello, World!"  # 明文
ciphertext = encrypt(key, plaintext)  # 加密
print(ciphertext)  #

 

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言