2015-10-23 79 views
1

我想生成一個私鑰,公鑰對並將它們分別放入private.keypublic.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() is not available。

如何將公鑰轉儲到文件?

回答

0

用於打印公共RSA密鑰的OpenSSL函數似乎不是由Python OpenSSL包裝器導出的。通過訪問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----- 

這僅僅是用於說明目的。應該通過新方法dump_publickey()等將適當的解決方案添加到crypto模塊本身。

相關問題