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)