1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| import base64
from Crypto.Cipher import AES
class AESTool: def __init__(self, iv, key): self.key = key.encode("utf-8") self.iv = iv.encode("utf-8")
def pkcs7padding(self, text): """ 明文使用PKCS7填充 """ bs = 16 length = len(text) bytes_length = len(text.encode("utf-8")) padding_size = length if (bytes_length == length) else bytes_length padding = bs - padding_size % bs padding_text = chr(padding) * padding self.coding = chr(padding) return text + padding_text
def encrypt(self, content: str): """ AES加密 """ cipher = AES.new(self.key, AES.MODE_CBC, self.iv) content_padding = self.pkcs7padding(content) encrypt_bytes = cipher.encrypt(content_padding.encode("utf-8")) result = str(base64.b64encode(encrypt_bytes), encoding="utf-8") return result
def decrypt(self, content: str): """ AES解密 """ cipher = AES.new(self.key, AES.MODE_CBC, self.iv) content = base64.b64decode(content) text = cipher.decrypt(content).decode("utf-8") return self.pkcs7padding(text) aes_tool = AESTool(iv, key) aes_tool.encrypt("") aes_tool.decrypt("")
|