AES/ECB/PKCS5P在python中添加加密

2024-04-25 13:58:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用在python中添加的AES/CBC/PKCS5P算法进行加密。我正在使用在线工具https://8gwifi.org/CipherFunctions.jsp获取正确的数据,但无法在python中实现它。请在下面找到我的代码片段

from Crypto.Cipher import AES
import base64
import re

DEFAULT_KEY = 'dkdlko9876543210'


class AesCbc:

    def __init__(self, key=None):
        self.key = key or DEFAULT_KEY
        self.mode = AES.MODE_CBC
        self.size = AES.block_size
        self.pad = lambda s: s + (self.size - len(s) % self.size) * chr(self.size - len(s) % self.size)

    def encrypt(self, content):
        cryptor = AES.new(self.key, self.mode, self.key)
        encrypted = cryptor.encrypt(self.pad(content))
        return base64.urlsafe_b64encode(encrypted)

    def decrypt(self, content):
        cryptor = AES.new(self.key, self.mode, self.key)
        content += (len(content) % 4) * '='
        content = base64.urlsafe_b64decode(content)
        decrypted = cryptor.decrypt(content)
        try:
            return re.compile('[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f\n\r\t]').sub('', decrypted.decode())
        except Exception:
            raise ValueError("inputted value can not be decrypted.")

test = AesCbc()

print(test.encrypt("value"))

但结果不同。我想实现AES/CBC/pkcs5p,添加与https://8gwifi.org/CipherFunctions.jsp相同的加密。请帮助我在python脚本中实现同样的算法


Tags: keyimportself算法sizelenmodedef