2015-10-23 73 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模块本身。

相关问题