Как расшифровать бронированную строку pgp с помощью PGPy, если бронированная строка не из PGPy?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как расшифровать бронированную строку pgp с помощью PGPy, если бронированная строка не из PGPy?

Сообщение Anonymous »

Я создаю сценарий, который взаимодействует с сервером, использующим шифрование PGP для шифрования его ответов.
Я могу запросить открытый ключ сервера и использовать этот ключ для зашифруйте мой запрос через библиотеку PGPy, и сервер сможет его расшифровать и ответить.
Зашифрованный запрос сценария содержит открытый ключ, который сервер ожидает как часть это API, поэтому он берет этот ключ, шифрует ответ и отправляет его обратно в мой скрипт. Мой сценарий нормально получает этот зашифрованный ответ, но у PGPy, похоже, нет средств для его расшифровки.
Насколько я могу судить, PGPy может расшифровать только зашифрованное им сообщение, потому что PGPKey. decrypt() принимает объект PGPMessage, а не бронированную строку, и я не могу найти метод, который принимает бронированную строку и либо расшифровывает ее, либо превращает в PGPMessage, чтобы я мог расшифровать его.
Это все, что мне удалось:

Код: Выделить всё

def get_token_from_payload(encrypted_payload):
print("Payload: ", encrypted_payload)
privkey, _ = pgpy.PGPKey.from_file('private.key')
message_blob = pgpy.PGPMessage.new(encrypted_payload)
token_string = privkey.decrypt(message_blob).message
print("Token: ", token_string)
return json.load(token_string)
message_blob = pgpy.PGPMessage.new(encrypted_payload), который, как я думал, будет поступать правильно, не делает этого и вместо этого создает собственный зашифрованный текстовый объект, который строка token_string = privkey.decrypt(message_blob).message просто превращается обратно в бронированную строку ascii, с которой я начал. Конечно, последняя строка не работает, потому что нет json, с которым можно что-либо сделать, поэтому мы пока проигнорируем это, поскольку это должно работать нормально, как только PGPy что-то расшифровает.
Наверное, я что-то упускаю. Эта библиотека по сути бесполезна, если она не может этого сделать. Как мне либо расшифровать бронированную строку, либо преобразовать бронированную строку в PGPMessage, который затем можно расшифровать?
Обновление:

Код: Выделить всё

def get_token_from_payload(encrypted_payload):
ep_file = open("ep.pgp", "w")
ep_file.write(encrypted_payload)
ep_file.close()
privkey, _ = pgpy.PGPKey.from_file('private.key')
message = pgpy.PGPMessage.from_file("ep.pgp")
token_string = privkey.decrypt(message).message
return json.loads(token_string)
Это решение работает, но я не считаю его приемлемым, поскольку оно требует дополнительного набора шагов ввода-вывода, создания файла и последующего чтения его обратно. У меня уже есть бронированный ascii в памяти, я просто хочу расшифровать его напрямую.

Подробнее здесь: https://stackoverflow.com/questions/727 ... -isnt-from
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»