使用python3将.key格式的私钥转换为.pem格式

使用python3将.key格式的私钥转换为.pem格式,python,python-3.x,openssl,cryptography,private-key,Python,Python 3.x,Openssl,Cryptography,Private Key,我正在尝试使用python3将.key格式的私钥转换为.pem格式的密钥。在使用python3之前,我可以通过运行openssl命令将私钥转换为.pem格式,如下所示: openssl rsa -in <private_key_file> -outform PEM -out <new_file> 这是我的密码。任何帮助都将不胜感激。从Cryptodome库中,您可以使用导入密钥方法,该方法支持RSA私钥的以下格式: PKCS#1RSAPrivateKeyDER序列(二

我正在尝试使用python3将.key格式的私钥转换为.pem格式的密钥。在使用python3之前,我可以通过运行openssl命令将私钥转换为.pem格式,如下所示:

openssl rsa -in <private_key_file> -outform PEM -out <new_file>

这是我的密码。任何帮助都将不胜感激。

从Cryptodome库中,您可以使用
导入密钥
方法,该方法支持RSA私钥的以下格式:

  • PKCS#1
    RSAPrivateKey
    DER序列(二进制或PEM编码)
  • PKCS#8
    PrivateKeyInfo
    EncryptedPrivateKeyInfo
    DER序列(二进制或PEM编码)
以下是您可以如何使用它:

from Cryptodome.PublicKey import RSA
key = RSA.import_key(open('private.key', "rb").read(), passphrase="(passphrase in case you have one)")

pv_key_string = key.exportKey()
with open ("private.pem", "w") as prv_file:
    print("{}".format(pv_key_string.decode()), file=prv_file)

我不清楚你所说的。键格式。可能是PKCS#8,因为posted语句可以将PKCS#8转换为PKCS#1密钥(PEM编码)。请发布您的密钥示例(或PEM编码时的相应头)。假设文件扩展名唯一标识加密密钥的格式是错误的。不幸的是,
.pem
.key
都不这样做。当我为我的加密实验创建文件时,我总是尝试使用一个唯一的后缀,比如PKCS#8私钥的
.pk8
。根据
PEM
的描述,PEM是关于
-inform
/
-outform
@Topaco的默认值,你是对的,我已经相应地编辑了我的答案。
from Cryptodome.PublicKey import RSA
key = RSA.import_key(open('private.key', "rb").read(), passphrase="(passphrase in case you have one)")

pv_key_string = key.exportKey()
with open ("private.pem", "w") as prv_file:
    print("{}".format(pv_key_string.decode()), file=prv_file)