Python模块之Cryptodome.Cipher AES加解密模块

模块作用简介:

Cryptodome.Cipher AES加解密模块。

pycryptodome是pycrypto的延伸版本,用法和pycrypto 是一模一样的。crypto在python上面的名字是pycrypto它是一个第三方库,但是大约已经在2018年左右停更了



官方 英文 帮助:https://docs.python.org/3/library/
官方 简体中文 帮助:https://docs.python.org/zh-cn/3/library/



必要操作:

>>> from Cryptodome.Cipher import AES


Linux安装:

>>> pip install pycryptodome

Windows安装:

>>> pip install pycryptodomex


导入包:

>>> from Cryptodome.Cipher import AES


帮助查看:

>>> help(Cryptodome)

或 单独查看某个子方法(函数)

>>> help(Cryptodome.包名.函数)


方法(函数):

包模块介绍:

包名 描述
Crypto.Cipher 数据的加密、解密模块,例如 AES
Crypto.Signature 数据的签名、验签
Crypto.Hash 消息摘要
Crypto.PublicKey 用于公钥的生成、导出和导入
Crypto.Random 用于生成随机数据
Crypto.Util 工具类,例如数据填充


参数



返回值

返回True,否则返回False。



使用示例:

示例1: AES对称加密、解密

对称加密使用同一个密钥进行加密和解密,是一种高效的加密方式。pycryptodome 提供了多种对称加密算法的实现,如 AES、DES、Triple DES 等。

from Crypto.Cipher import AES

# 加密
def encrypt(message, key):
    cipher = AES.new(key, AES.MODE_EAX)
    ciphertext, tag = cipher.encrypt_and_digest(message)
    return ciphertext, tag

# 解密
def decrypt(ciphertext, tag, key):
    cipher = AES.new(key, AES.MODE_EAX, nonce=nonce)
    plaintext = cipher.decrypt_and_verify(ciphertext, tag)
    return plaintext


示例2:非对称加密

非对称加密使用一对密钥,公钥用于加密,私钥用于解密。pycryptodome 支持多种非对称加密算法的实现,如 RSA、DSA、ElGamal 等。

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

# 生成密钥对
key = RSA.generate(2048)

# 获取公钥和私钥
public_key = key.publickey()
private_key = key

# 加密
cipher = PKCS1_OAEP.new(public_key)
ciphertext = cipher.encrypt(message)

# 解密
cipher = PKCS1_OAEP.new(private_key)
plaintext = cipher.decrypt(ciphertext)


示例3:哈希函数

哈希函数将任意长度的数据映射为固定长度的哈希值,常用于数据完整性校验和密码存储。pycryptodome 提供了多种哈希函数的实现,如 SHA-256、MD5、SHA-1 等。

from Crypto.Hash import SHA256

# 计算哈希值
hash_obj = SHA256.new()
hash_obj.update(message)
hash_value = hash_obj.digest()


示例4:消息认证码

消息认证码是一种用于验证消息完整性和真实性的技术。pycryptodome 提供了多种消息认证码算法的实现,如 HMAC、CMAC 等。

from Crypto.Hash import HMAC

# 计算 HMAC
hmac_obj = HMAC.new(key, digestmod=SHA256)
hmac_obj.update(message)
hmac_value = hmac_obj.digest()


示例5:生成随机数

from Crypto.Random import get_random_bytes

# 生成随机数
random_bytes = get_random_bytes(16)



示例6:密码学安全随机数生成器

from Crypto.Random import random

# 生成密码学安全随机数
crypto_random = random.getrandbits(128)



示例7:码学安全伪随机数生成器

from Crypto.Random import atfork

# 初始化密码学安全伪随机数生成器
atfork.init()



示例:









相关文章:
Python安装包下载:https://www.cnblogs.com/wutou/p/17709685.html
Pip 源设置:https://www.cnblogs.com/wutou/p/17531296.html
pip 安装指定版本模块:https://www.cnblogs.com/wutou/p/17716203.html


参考、来源:
青灯教育-公开课
https://blog.csdn.net/jacke121/article/details/104928368
https://www.cnblogs.com/QKSword/p/8384132.html
https://zhuanlan.zhihu.com/p/426415130
https://www.cnblogs.com/hellozizi/p/11809799.html
https://probiecoder.cn/python/pycryptodome.html (包模块介绍)
https://blog.csdn.net/wuShiJingZuo/article/details/136643546 (加密、解密、示例1、2、3、4)







posted @ 2025-09-01 17:35  悟透  阅读(3)  评论(0)    收藏  举报