Python环境下持有Fernet密钥文件但未知加密内容时的解密实现
解决方案
核心逻辑说明
Fernet 本身的解密流程天生不需要原始明文参与,你现有代码的问题是密钥依赖本地pass.key文件存储,和加密环境绑定了。只需要把加密生成的独立密钥、密文、解密逻辑三者打包发送,即可让好友直接独立解密。
第一步:加密端优化代码
import cryptography from cryptography.fernet import Fernet # 生成密钥 key = Fernet.generate_key() # 输出密钥,把这个内容发给好友 print("密钥:", key.decode()) # 加密你要发送的明文 plain_text = "Hello!! Awesome code!!".encode() fernet_encrypt = Fernet(key) cipher_text = fernet_encrypt.encrypt(plain_text) # 输出密文,把这个内容发给好友 print("密文:", cipher_text.decode())
运行上面的代码会得到两个字符串,分别是密钥和密文,把这两个内容记下来。
第二步:给好友的独立解密代码
把下面的代码和你刚才得到的密钥、密文一起发给好友,好友只需要把对应内容填到指定位置,运行就能得到明文,不需要任何额外信息:
from cryptography.fernet import Fernet # 在这里填入你收到的密钥 key = "这里替换为发信人给的密钥".encode() # 在这里填入你收到的密文 cipher_text = "这里替换为发信人给的密文".encode() fernet_decrypt = Fernet(key) plain_text = fernet_decrypt.decrypt(cipher_text) print("解密得到的内容:", plain_text.decode())
注意事项
- Fernet 加密后的密文本身已经包含了算法所需的初始化向量、版本标识、校验信息等所有参数,不需要额外存储加密阶段的其他上下文
- 传输密钥和密文时不要修改任意字符,否则会导致解密失败
- 如果需要发送的明文很长,可以把密文存成单独的文件一起发送,解密时读取文件内容即可,逻辑完全一致
内容的提问来源于stack exchange,提问作者Simon Hansen
相关产品推荐
相关产品推荐

