我希望这将对以后的人们有所帮助,因为我有同样的需求,并且找不到答案,所以我自己做了。以为我会和你分享。
1.创建一个PEM文件
bio_pub = _new_mem_buf() # Memory buffers to write tobio_priv = _new_mem_buf()helper = OpenSSL.crypto._PassphraseHelper(OpenSSL.crypto.FILETYPE_PEM, None)pk = OpenSSL.crypto.PKey()pk.generate_key(OpenSSL.crypto.TYPE_RSA, n)# Convert from EVP_PKEY type to RSA typersa_pkey = _lib.EVP_PKEY_get1_RSA(pk._pkey)result_pre = _lib.PEM_write_bio_RSAPublicKey(bio_pub, rsa_pkey)result_pre = _lib.PEM_write_bio_RSAPrivateKey( bio_priv, rsa_pkey, _ffi.NULL, _ffi.NULL, 0, helper.callback, helper.callback_args)
在这部分之后,您将在缓冲区中拥有公钥和私钥。要以字符串形式获取它,可以调用以下函数:
_bio_to_string(bio_pub), _bio_to_string(bio_priv)
我将这些导入用于OpenSSL.crypto的特殊“私有”功能:
import OpenSSLfrom OpenSSL._util import lib as _lib, ffi as _ffifrom OpenSSL.crypto import _new_mem_buf, _bio_to_string



