#python
Вопрос:
Я хотел создать программу, в которой я мог бы сделать некоторое шифрование, затем отправить его другу, а затем отправить ему ключ шифрования и код расшифровки, а затем он мог бы сам расшифровать сообщение. Я только понял, как расшифровать что-то на основе шифрования, это моя попытка:
импорт криптографии
от криптографии.фернет импорт Фернет
ключ = Fernet.generate_key()
печать(ключ)
с открытым(«pass.key», «wb») в качестве файла ключа: файл ключа.запись(ключ)
деф клавиша вызова():
return open("pass.key", "rb").read()
ключ = call_key()
код = «Привет!! Потрясающий код!!».кодировать()
a = Фернет(ключ)
код = a.шифрование(код)
печать(код)
ключ = call_key()
b = Фернет(ключ)
decoded_code = b.расшифровать(код)
печать(декодированный код)
Проблема в том, что для этого должна быть известна зашифрованная часть. я хочу, чтобы его можно было расшифровать, не зная исходного сообщения. Спасибо за вашу помощь:)
Ответ №1:
Я думаю, что на самом деле у тебя есть и то, и другое, чего ты хочешь, просто ты еще не разделил их. Допустим, у вас есть два сценария вместо одного блока кода, который у вас есть.
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!!'
Комментарии:
1. Большое спасибо! Это сработало! Во-первых, этого не произошло, хотя, поскольку я использовал тот же ключ, что и в первой созданной мной программе, программе это не понравилось. Как только я дал ключу новое имя, а следовательно, и новый ключ, он сработал идеально!