安装依赖
pip install pycryptodome
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64, os
# AES CBC 模式简单实现
def aes_encrypt(key: bytes, plaintext: str) -> str:
iv = os.urandom(16)
cipher = AES.new(key, AES.MODE_CBC, iv)
ct = cipher.encrypt(pad(plaintext.encode(), AES.block_size))
return base64.b64encode(iv + ct).decode()
def aes_decrypt(key: bytes, ciphertext_b64: str) -> str:
raw = base64.b64decode(ciphertext_b64)
iv, ct = raw[:16], raw[16:]
cipher = AES.new(key, AES.MODE_CBC, iv)
pt = unpad(cipher.decrypt(ct), AES.block_size)
return pt.decode()
# 示例
if __name__ == "__main__":
key = b"1234567890abcdef" # 16 字节 = AES-128;可换成 32 字节 = AES-256
text = "Hello AES!"
enc = aes_encrypt(key, text)
print("加密后:", enc)
dec = aes_decrypt(key, enc)
print("解密后:", dec)
Top comments (0)