PyCrypto: создание ключа RSA, защищенного паролем DES3 - PullRequest
7 голосов
/ 02 апреля 2012

Мне удалось создать ключ RSA, защищенный паролем, с помощью DES3 (ну ... Я думаю , потому что я очень новичок в этом мире шифрования), с помощью команды:

openssl genrsa -out "/tmp/myKey.pem" -passout pass:"f00bar" -des3 2048

Теперь я хотел бы сделать это внутри скрипта Python, используя PyCrypto, если это возможно. Я видел это сообщение , которое, кажется, препятствует использованию PyCrypto для этого. Это все еще так?

Конечно, я всегда могу позвонить os.execute и выполнить указанную выше команду, но я бы посчитал это "обманом" : -) . Я делаю это, чтобы выучить PyCrypto.

Заранее спасибо.

1 Ответ

6 голосов
/ 02 апреля 2012

Начиная с PyCrypto 2.5 вы можете экспортировать закрытый ключ RSA и защитить его парольной фразой. Тройной ключ DES извлекается из пароля и используется для фактического шифрования.

Например:

from Crypto import RSA
from Crypto import Random

random_generator = Random.new().read
key = RSA.generate(1024, random_generator)
exportedKey = key.exportKey('PEM', 'my secret', pkcs=1)

Переменная exportedKey содержит версию ключа ASCII (PEM), закодированную в соответствии с PKCS # 1 (криптографический стандарт. Другой вариант - pkcs=8 для - угадайте, что - PKCS # 8). Поскольку результат является стандартным, вы можете использовать его с несколькими другими программами, включая openssl. И, конечно, вы также можете повторно импортировать его обратно в python через PyCrypto!

Метод exportKey задокументирован здесь .

...