模块介绍
cryptography 库是一个专为 Python 设计的用于加密和解密操作的模块,提供了高层次的加密协议和低层次的原始加密功能。该库支持多种加密方式,包括对称加密、非对称加密以及密钥管理等。它已被广泛应用于安全通信、数据保护及数字签名等多个领域。支持的 Python 版本包括 3.5 及以上。
应用场景
cryptography 库主要用于以下几个场景:
- 数据加密与解密:在数据存储或传输时对数据进行加密,以防止未经授权的访问。
- 数字签名:用于保护数据的完整性和身份验证,是确保通信安全的重要手段。
- 密钥管理:在安全环境中生成、存储和管理加密密钥。
- SSL/TLS 协议实现:有助于创建安全的网络通信通道,防止数据篡改和窃听。
安装说明
cryptography 不是 Python 的内置模块,但可以通过以下命令轻松安装:
1
| pip install cryptography
|
用法举例
1. 示例一:对称加密(AES)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| from cryptography.fernet import Fernet
key = Fernet.generate_key() cipher_suite = Fernet(key)
data = b"Hello, secure world!" encrypted_data = cipher_suite.encrypt(data) print(f"Encrypted: {encrypted_data}")
decrypted_data = cipher_suite.decrypt(encrypted_data) print(f"Decrypted: {decrypted_data.decode()}")
|
在这个示例中,我们使用 AES 对称算法对一段文本进行加密和解密。生成密钥后,数据经过加密,只有使用正确的密钥才能解密。
2. 示例二:非对称加密(RSA)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.asymmetric import rsa from cryptography.hazmat.primitives import serialization
private_key = rsa.generate_private_key( public_exponent=65537, key_size=2048, backend=default_backend() )
public_key = private_key.public_key()
pem = public_key.public_bytes( encoding=serialization.Encoding.PEM, format=serialization.PublicFormat.SubjectPublicKeyInfo ) print(f"Public Key: {pem.decode()}")
|
在这一示例中,我们演示了如何生成 RSA 密钥对,并将公共密钥序列化为 PEM 格式以便存档和分享。这样的技术可以用于安全信道的创建。
3. 示例三:数字签名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.asymmetric import padding
message = b"Message to sign"
signature = private_key.sign( message, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), hashes.SHA256() ) print(f"Signature: {signature}")
public_key.verify( signature, message, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), hashes.SHA256() )
|
此示例展示了如何使用 RSA 私钥对消息进行数字签名,以及如何使用公共密钥验证该签名。这是在信息安全中非常重要的一个环节,确保数据的完整性和来源。
通过以上示例,您可以看到 cryptography 库的强大和灵活性,适用于多种数据安全需求。
欢迎大家关注我的博客(全糖冲击博客),这里有丰富的 Python 标准库使用教程,方便您快速查询和学习。我的博客不仅提供详细的代码示例和实现思路,还有实用的技巧和经验分享,帮助您在学习和工作中游刃有余。关注我的博客,让我们一起探索 Python 的无穷魅力,助力您的编程之路更加顺畅和有效!