python AES 加密 - PyCryptodome

创建日期: 2023-05-02 19:02 | 作者: 风波 | 浏览次数: 14 | 分类: Python

不要使用 pycrypto,要使用 pycryptodome。来源:https://stackoverflow.com/questions/70705404/systemerror-py-ssize-t-clean-macro-must-be-defined-for-formats

1. 安装依赖包

pip3 install pycryptodome -i https://pypi.douban.com/simple/ --trusted-host pypi.douban.com

2.1. AES.MODE_CBC 对称加密

CBC 对称加密

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64

def encrypt_msg(msg, key):
    data = msg.encode()
    key = key.encode()
    iv = "some text string" # 16 bytes 的字符串

    cipher = AES.new(pad(key, AES.block_size), AES.MODE_CBC, iv=iv)
    ciphered_data = cipher.encrypt(pad(data, AES.block_size)) # 加密后的byte数据

    return base64.b64encode(ciphered_data).decode() # base64 后返回字符串

CBC 对称解密

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64

def decrypt_msg(msg, key):
    data = base64.b64decode(msg.encode())
    key = key.encode()
    iv = "some text string" # 16 bytes 的字符串

    cipher = AES.new(pad(key, AES.block_size), AES.MODE_CBC, iv=iv)
    original_data = unpad(cipher.decrypt(data), AES.block_size)

    return original_data # 解密后的数据

支持的加密算法列表: - MODE_CBC - MODE_CFB - MODE_OFB - MODE_OPENPGP

参考:https://officeguide.cc/python-pycryptodome-aes-symmetric-encryption-tutorial-examples/

14 浏览
7 爬虫
0 评论