Python Openssl生成rsa密钥对并写入文件

时间:2015-10-23 12:17:13

标签: python file openssl rsa public-key

我想生成一个私有公钥对,并分别将它们放入 private.key public.key 文件中。 我有以下代码。

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()不可用。

如何将公钥转储到文件?

1 个答案:

答案 0 :(得分: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-----

这仅用于说明目的。应通过新方法crypto等将适当的解决方案添加到dump_publickey()模块本身。

相关问题