✨前言
cryptography 库是一个强大的 Python 加密库,提供了对加密算法和协议的高层和低层访问。它是用来实现数据加密、签名、密钥管理等功能的。以下是一些常见用法的详解,帮助你理解如何使用这个库。
✨安装
首先,你需要确保安装了 cryptography 库:
pip install cryptography
✨1. 对称加密
对称加密是指加密和解密使用相同的密钥。Fernet 是 cryptography 库中提供的对称加密类。
示例:使用 Fernet 进行加密和解密
from cryptography.fernet import Fernet
# 生成密钥
key = Fernet.generate_key()
cipher_suite = Fernet(key)
# 加密数据
plain_text = b"Hello, World!"
cipher_text = cipher_suite.encrypt(plain_text)
print(f"Cipher Text: {
cipher_text}")
# 解密数据
decrypted_text = cipher_suite.decrypt(cipher_text)
print(f"Decrypted Text: {
decrypted_text.decode('utf-8')}")
"""
Cipher Text: b'gAAAAABm1SuaILy-UxWXz4hpBxVmrFlrZ1pPGJPTLZNMqqp38qwcHjTX16BbWasLUvhkCCL485jSfCTZ0HQWUptYniUX6EAwQA=='
Decrypted Text: Hello, World!
"""
✨2. 非对称加密
非对称加密使用一对密钥:公钥和私钥。cryptography 库中提供了 RSA 算法的实现。
示例:使用 RSA 进行加密和解密
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes
# 生成 RSA 密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
backend=default_backend()
)
public_key = private_key.public_key()
# 加密数据
message = b"Hello, RSA!"
cipher_text = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(f"Cipher Text: {
cipher_text}"