Питона асимметричного шифрования: с использованием предварительно сгенерированных клавиш PRV / PUB

StackOverflow https://stackoverflow.com/questions/3852190

Вопрос

Хорошо, сначала да, я искал Google и Stackoverflow и сделал некоторые чтения (более 4 часов только в этом сидящем) не нашел то, что мне нужно по этим причинам:

  • Многие из них предлагают просто запустить EXE, как GPG.exe (http://stackoverflow.com/questions/1020320)

  • Некоторые предложили использовать Pycrypto или другие библиотеки и глядя на них, либо A) Я не могу найти, как использовать какой-либо из их API, б) Я не могу найти, как импортировать ранее существующий ключ PRV / PUB или C) они используйте небезопасно Randompool (и я пытаюсь обновить, это просто просит неприятностей)

  • Некоторые упоминают об этом в прохождении, но я не мог найти то, что они, где связаны (или их, не было никакой ссылки вообще.

Итак, я знаю, попросите вас товарищей пользователей Stackoverflow Как я могу сделать это, взять строку открытого ключа (или путь (я мог бы просто написать его в файл Temp, (я планирую просто иметь его как строку PUB_KEY = ».. . "))) и используйте его, чтобы подписать и закрепить строку (которая будет размещена на форуме (JSON для обновления моего приложения)?

Также это клавиши RSA (Butty GEN 4096 BITS SSH-2-RSA), которые генерируются с использованием путтыгена (могут быть в любом формате (OpenSSH, SSH.com, PPK)

Это как выглядит открытый ключ

---- начать SSH2 открытый ключ ----

Комментарий: «RSA-Key-20101003»

AAAAB3NzaC1yc2EAAAABJQAAAgEAi+91fFsxZ7k1UuudSe5gZoavwARUyZScCtdf WQ0ROoJC+XIqW5vVJfgmr+A1jLS5m4wNsrCqeyoX2B22T6iEwqVXrXt3QcbccKMu WkLKFK1h67q6Coc+3eOTmKrOuZbWc19YQgybdkR/GxF7XAbq4NCGNaCDtMOqX8Q2 L/a9fAYqVdTwg9trpcz3whNmdLk/B0edOABKuVX51UdLV+ZggK503+uAb1JiIIj0 mARwR/HNo4oRLMLf2PjuZsGVYYjJDdVJBU6AN4PUQSRRRPL4+YmsrLJb/TpfJeXA vj4KZMNJv15YXz7/iMZMKznDtr2RJX5wbSpuTUBNZveA7YiIHxvvvis38b/lX9SJ SYPfZ9CeQY6MvQgG2zwDTOOvKgOIB4sTGMXfcoxB8AF/QXOcxWFJkZoj36rvMd9n Po6szLjHXwcEUOUvvQfG4VvdQA0H5gGLHqYL1EehRsgi5qcCoFPaZW2K09ErKcS0 MbrLFjBkQ9KmqAM38bvM8UhCWAMA9VXOGHMxUHBV4Bir9alGS4VX0B8Y0b3dZ+7I MKkHMCwdEUJf7QVdGxGuSQtVsq8RZbIpk3g7wtv8f6I/iEC58ekdrH35tq5+1ilW dkk9+rrhUy4qrZ+ HFI7AEEMEBPIUMBSNEBVNKMAIPAOO23V8C9BQ0IUXX4GIZF10 O + TPSK8 =

---- END SSH2 открытый ключ ----

Не так -> ключевой формат кажется PKCS1, поэтому M2Crypto не будет работать (его функция нагрузки ключей ожидает PEM)

Последнее чтение Я думаю, что это формат файла открытого ключа SSH (RFC: http://www.ietf.org/rfc/rfc4716.txt. )

Я также думаю, что ниже неправильно, я не думаю, что это обрабатывает формат файла открытого ключа SSH :(

Также похоже, что скрученный может быть там, где я должен выглядеть

http://www.java2s.com/Open-source/python/network/twisted/twisted-1.0.3/twisted-1.0.3/twisted/Conch/ssh/keys.py.htm.

Также почему так не позволяет мне немедленно опубликовать щедрость ??

Это было полезно?

Решение

Хорошо, я нашел, как загрузить его

from twisted.conch.ssh import keys as Keys
import base64

public_key = """\
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20101003"
AAAAB3NzaC1yc2EAAAABJQAAAgEAi+91fFsxZ7k1UuudSe5gZoavwARUyZScCtdf
WQ0ROoJC+XIqW5vVJfgmr+A1jLS5m4wNsrCqeyoX2B22T6iEwqVXrXt3QcbccKMu
WkLKFK1h67q6Coc+3eOTmKrOuZbWc19YQgybdkR/GxF7XAbq4NCGNaCDtMOqX8Q2
L/a9fAYqVdTwg9trpcz3whNmdLk/B0edOABKuVX51UdLV+ZggK503+uAb1JiIIj0
mARwR/HNo4oRLMLf2PjuZsGVYYjJDdVJBU6AN4PUQSRRRPL4+YmsrLJb/TpfJeXA
vj4KZMNJv15YXz7/iMZMKznDtr2RJX5wbSpuTUBNZveA7YiIHxvvvis38b/lX9SJ
SYPfZ9CeQY6MvQgG2zwDTOOvKgOIB4sTGMXfcoxB8AF/QXOcxWFJkZoj36rvMd9n
Po6szLjHXwcEUOUvvQfG4VvdQA0H5gGLHqYL1EehRsgi5qcCoFPaZW2K09ErKcS0
MbrLFjBkQ9KmqAM38bvM8UhCWAMA9VXOGHMxUHBV4Bir9alGS4VX0B8Y0b3dZ+7I
MKkHMCwdEUJf7QVdGxGuSQtVsq8RZbIpk3g7wtv8f6I/iEC58ekdrH35tq5+1ilW
dkk9+rrhUy4qrZ+HFi7AeemybpiumbSnebvnkMaIPAOo23V8C9BQ0iuxx4gIZf10
o+TPSK8=
---- END SSH2 PUBLIC KEY ----"""

key_data = ''.join(public_key.splitlines()[2:-1])# remove begin, end tags and comment
blob = base64.decodestring(key_data)
key = Keys.Key._fromString_BLOB(blob)

Другие советы

Я могу подумать как минимум двух относительно простых вариантов

  1. Используйте OpenSSL (или PyopensSL) для преобразования BER в PEM
  2. Используйте Paramiko, Twisted или любую другую реализацию Python SSH для работы с ключами напрямую
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top