DEV Community

drake
drake

Posted on

AES加密

安装依赖

pip install pycryptodome
Enter fullscreen mode Exit fullscreen mode
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)

Enter fullscreen mode Exit fullscreen mode

Top comments (0)