首页 > 解决方案 > 当您拥有密钥文件但不知道在 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)

打印(解码代码)

问题是要使其工作,必须知道加密的部分。我想要它,以便可以在不知道原始消息的情况下对其进行解密。谢谢你的帮助:)

标签: python

解决方案


我认为您实际上拥有两种想要的东西,只是您还没有将它们分开。假设您有两个脚本,而不仅仅是您拥有的代码块。

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!!'

推荐阅读