对称加密和非对称加密是常用的加密技术,用于保护数据的安全性。
对称加密:
对称加密使用相同的密钥进行加密和解密。这意味着发送和接收方必须共享相同的密钥,这是它的主要缺点之一。
步骤:
示例:
from cryptography.fernet import Fernet
# 生成随机密钥 key = Fernet.generate_key()
# 创建加密器 cipher_suite = Fernet(key)
# 明文 text = b'Hello, World!'
# 加密 cipher_text = cipher_suite.encrypt(text)
# 解密 plain_text = cipher_suite.decrypt(cipher_text)
非对称加密:
非对称加密使用一对密钥,公钥和私钥。公钥用于加密数据,而私钥用于解密数据。这意味着发送方可以使用接收方的公钥加密数据,但只有接收方持有私钥才能解密数据。
步骤:
示例:
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 ) public_key = private_key.public_key()
# 将密钥序列化为PEM格式 private_pem = private_key.private_bytes( encoding=
serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption() ) public_pem = public_key.public_bytes( encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo )
# 加密和解密示例略
比较:
对称加密用于加密数据本身,而非对称加密用于在通信开始时安全地交换对称密钥。这种组合被称为“混合加密”。
联系客服