2015-10-23 3 views
1

Я хочу, чтобы создать частную, пару открытых ключей и поместить их в private.key и public.key файлов соответственно. У меня есть следующий код.Python Openssl генерировать пару ключей RSA и записи в файл

from OpenSSL import crypto, SSL 

def gen_rsa_key_pair(): 
    k = crypto.PKey() 
    k.generate_key(crypto.TYPE_RSA, 1024) 
    open("Priv.key", "wt").write(crypto.dump_privatekey(crypto.FILETYPE_PEM, k)) 

crypto.dump_publickey() не доступен.

Как сбрасывать открытый ключ в файл?

ответ

0

Функции OpenSSL для печати открытого ключа RSA, похоже, не экспортируются оболочкой OpenSSL Python. Заходя внутренности crypto модуля, вы могли бы еще сделать это самостоятельно (при условии, что вы установили этот пакет локально), так как этот фрагмент кода показывает:

>>> bio = crypto._new_mem_buf() 
>>> rsa = crypto._lib.EVP_PKEY_get1_RSA(k._pkey) 
>>> crypto._lib.PEM_write_bio_RSAPublicKey(bio, rsa) 
1 
>>> s = crypto._bio_to_string(bio) 
>>> print(s) 
-----BEGIN RSA PUBLIC KEY----- 
MIGJAoGBANF1gYh10F8HTQdM6+bkwAwJ0Md6bMciKbP3qS6KTki3v3m+cM17Szqq 
Mp4xxWbvnS2oeotYfn8eaZg0QUTOVDd1F7tuOxVEdvQ9ZEp1aeOCRU3b9QZSmVfg 
wJrqDG3f149mNdexI12plwaxyt6odonv6+fEQJrbhrV/nIA8N/EFAgMBAAE= 
-----END RSA PUBLIC KEY----- 

Это только для целей иллюстрации. Правильное решение должно быть добавлено к самому модулю crypto с помощью нового метода dump_publickey() или тому подобного.

Смежные вопросы