python - 当您拥有密钥文件但不知道在 Python 中加密了什么时解密 Fernet 密钥
问题描述
我想创建一个程序,我可以在其中进行一些加密,然后将其发送给朋友,然后将加密密钥和解密代码发送给他,然后他可以自己解密消息。我只知道如何根据加密解密某些内容,这是我的尝试:
导入密码学
从 cryptography.fernet 导入 Fernet
键 = Fernet.generate_key()
打印(键)
使用 open("pass.key", "wb") 作为 key_file: key_file.write(key)
def call_key():
return open("pass.key", "rb").read()
键 = call_key()
code = "你好!!很棒的代码!!".encode()
a = Fernet(键)
代码 = a.加密(代码)
打印(代码)
键 = call_key()
b = Fernet(键)
decoded_code = b.decrypt(code)
打印(解码代码)
问题是要使其工作,必须知道加密的部分。我想要它,以便可以在不知道原始消息的情况下对其进行解密。谢谢你的帮助:)
解决方案
我认为您实际上拥有两种想要的东西,只是您还没有将它们分开。假设您有两个脚本,而不仅仅是您拥有的代码块。
encrypt.py
:
from cryptography.fernet import Fernet
key = Fernet.generate_key()
print(key)
with open("pass.key", "wb") as key_file: key_file.write(key)
code = "Hello!! Awesome code!!".encode()
a = Fernet(key)
code = a.encrypt(code)
print(code)
这会产生一些输出,其中第一行是密钥,第二行是带有您生成的密钥的编码消息。
b'uRcjLwzI3N732Zy02kz35SfFJXgXY3EVKHmSo66xqUg='
b'gAAAAABhXztbKmk_2ALnJSawKjelg2wmn-hdq5dtpIJK0KbveL1pioAJRdNOzuh91acsA0ZFil5VOrSF8oAT4VoV_opezc8BTQMjsV3wkvq78OSEG850pGA='
然后假设您将字节字符串与密钥文件一起传递给您的朋友pass.key
。然后你可以有,s
编码的消息在哪里,
decrypt.py
:
from cryptography.fernet import Fernet
s = "gAAAAABhXztbKmk_2ALnJSawKjelg2wmn-hdq5dtpIJK0KbveL1pioAJRdNOzuh91acsA0ZFil5VOrSF8oAT4VoV_opezc8BTQMjsV3wkvq78OSEG850pGA="
code = bytes(s, "utf-8")
def call_key(): return open("pass.key", "rb").read()
key = call_key()
b = Fernet(key)
decoded_code = b.decrypt(code)
print(decoded_code)
产生
b'Hello!! Awesome code!!'
推荐阅读
- c# - 在 .net 核心 Web API 中自动添加策略属性
- azure - 在 Azure Bot Analytics 刀片中,如何获取特定用户 ID 的数据?
- apache-spark - java.lang.UnsupportedOperationException:写入时火花出错
- node.js - 将图像上传到 S3 以获取更大的文件
- matlab - Matlab 中出现错误:未定义的函数或变量“removeStopWords”
- linux - 如何使进程中的一个或多个线程停止消耗 CPU 资源?
- apache-kafka - Zookeeper 没有运行
- swift - 使用 textFieldShouldReturn 方法将焦点移动到下一个 textField 它在 Apple TV App 中不起作用
- javascript - 防止页面 URL 传递到 GTM
- c# - 导入 .FBX 文件