使用 Fernet 在 Python 中实现端到端加密通信
使用 Fernet 在 Python 中实现端到端加密通信非常简单。Fernet 是一个对称加密算法,可以在发送方和接收方之间共享加密密钥,用于加密和解密通信内容。下面是使用 Fernet 在 Python 中实现端到端加密通信的示例:
首先,在你的 Python 项目中安装 cryptography 库:
pip install cryptography
然后,创建一个加密模块 encryption.py,用于加密和解密数据:
from cryptography.fernet import Fernet # 密钥加密和解密时必须相同 SECRET_KEY = b'your-secret-key-here' class Encryption: def __init__(self, key): self.key = key def encrypt(self, plaintext): fernet = Fernet(self.key) return fernet.encrypt(plaintext.encode()) def decrypt(self, ciphertext): fernet = Fernet(self.key) return fernet.decrypt(ciphertext).decode()
在上述代码中,我们首先定义了 Fernet 密钥,然后创建了一个加密类 Encryption,用于加密和解密数据。在构造函数中,我们传入 Fernet 密钥。然后,我们使用 Fernet 密钥加密和解密数据。
接下来,在发送方和接收方之间,可以使用以下代码来加密和解密数据:
from encryption import Encryption import socket # 发送方 send_encryption = Encryption(SECRET_KEY) plaintext = 'pidancode.com' ciphertext = send_encryption.encrypt(plaintext) s = socket.socket() host = 'localhost' port = 12345 s.connect((host, port)) s.send(ciphertext) s.close() # 接收方 receive_encryption = Encryption(SECRET_KEY) s = socket.socket() host = 'localhost' port = 12345 s.bind((host, port)) s.listen(1) conn, addr = s.accept() ciphertext = conn.recv(1024) plaintext = receive_encryption.decrypt(ciphertext) conn.close()
在上述代码中,我们首先创建了发送方和接收方的加密类实例 send_encryption 和 receive_encryption,并传入相同的 Fernet 密钥。然后,在发送方,我们将要发送的明文 plaintext 加密为密文 ciphertext,并使用 Socket API 将密文发送到接收方。在接收方,我们使用 Socket API 接收密文,然后将其解密为明文 plaintext。
注意:在上述示例中,我们使用硬编码的 Fernet 密钥。在实际应用中,应该从安全的源头(如加密设备或密钥管理系统)获取 Fernet 密钥。
另外,我们将加密和解密逻辑封装在 Encryption 类中,以便在不同的应用场景中重复使用。在实际应用中,可以将加密和解密逻辑
相关文章