在当今数字化时代,数据安全至关重要。无论是用户密码、通信内容还是敏感文件,都需要通过可靠的加密手段来保护。Python语言提供了一个强大且易用的密码学库——cryptography,它封装了底层复杂的加密算法,让开发者能快速实现安全功能。本教程将带你从零开始,掌握使用 cryptography 库进行对称加密和非对称加密的基本操作。

cryptography 是一个由 Python 安全社区维护的开源密码学库,它基于 OpenSSL 构建,提供了高级(high-level)和低级(low-level)两种 API。对于初学者,推荐使用其高级 API(如 Fernet),因为它自动处理密钥管理、填充、认证等复杂细节,避免常见安全漏洞。
该库支持多种现代加密标准,包括 AES(对称加密)、RSA/ECC(非对称加密)、HMAC(消息认证)等,是开发安全应用的首选工具之一。
首先,你需要通过 pip 安装该库:
pip install cryptography安装完成后,即可在 Python 脚本中导入使用。
对称加密使用同一个密钥进行加密和解密。cryptography 提供了 Fernet 类,它基于 AES-128-CBC 加密算法,并自动添加 HMAC 确保数据完整性,非常适合存储密码或加密配置文件。
from cryptography.fernet import Fernet# 生成一个安全的密钥key = Fernet.generate_key()print(key) # 输出类似 b'xvYd...'from cryptography.fernet import Fernet# 1. 生成密钥(实际应用中应安全保存)key = Fernet.generate_key()# 2. 创建 Fernet 实例f = Fernet(key)# 3. 要加密的消息(必须是 bytes)message = "我的秘密信息!".encode()# 4. 加密encrypted = f.encrypt(message)print("加密后:", encrypted)# 5. 解密decrypted = f.decrypt(encrypted)print("解密后:", decrypted.decode())注意:密钥一旦丢失,加密数据将无法恢复!因此在生产环境中,应将密钥存储在安全的地方(如环境变量、密钥管理服务)。
非对称加密使用一对密钥:公钥(public key)用于加密,私钥(private key)用于解密。常用于安全通信(如 HTTPS)、数字签名等场景。
from cryptography.hazmat.primitives.asymmetric import rsafrom cryptography.hazmat.primitives import serialization# 生成私钥private_key = rsa.generate_private_key( public_exponent=65537, key_size=2048,)# 获取公钥public_key = private_key.public_key()# 可选:将密钥序列化为 PEM 格式保存pem_private = private_key.private_bytes( encoding=serialization.Encoding.PEM, format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption())pem_public = public_key.public_bytes( encoding=serialization.Encoding.PEM, format=serialization.PublicFormat.SubjectPublicKeyInfo)print(pem_private.decode())print(pem_public.decode())from cryptography.hazmat.primitives.asymmetric import paddingfrom cryptography.hazmat.primitives import hashesmessage = b"这是需要加密的机密消息"# 使用公钥加密encrypted = public_key.encrypt( message, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ))# 使用私钥解密decrypted = private_key.decrypt( encrypted, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ))print("原始消息:", message.decode())print("解密消息:", decrypted.decode())非对称加密计算开销较大,通常只用于加密小段数据(如会话密钥),或配合对称加密构建混合加密系统。
通过本教程,你已经学会了如何使用 Python cryptography库 实现基本的 对称加密Python 和 非对称加密Python 操作。无论你是开发 Web 应用、处理用户数据,还是构建安全通信协议,这些技能都至关重要。记住,密码学不是魔法,正确使用才是安全的关键。
希望这篇 密码学教程 能帮助你迈出安全编程的第一步!
本文由主机测评网于2025-12-13发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126993.html