Python将私钥转换为RSA密钥

2024-04-29 05:12:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个私钥,格式如下

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIE6TAbBgkqhki....
----END ENCRYPTED PRIVATE KEY-----

如何将其转换为RSA格式的密钥

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA28jIsb8SAhJritwO....
-----END RSA PRIVATE KEY-----

我目前使用的加密技术版本是2.8。非常感谢您的帮助。提前谢谢


Tags: key版本格式密钥privatersaencryptedend
1条回答
网友
1楼 · 发布于 2024-04-29 05:12:26

正如Maarten Bodewes在评论中所述,OpenSSL可以将PKCS#8格式的加密私钥转换为PKCS#1格式的私钥(均为PEM编码)。但这也可以通过加密库来实现

密码学库支持使用方法^{}(自版本0.6起)导入PKCS#8格式、PEM编码的(加密)私钥,例如:

from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization

pkcs8Encrypted = b"""  -BEGIN ENCRYPTED PRIVATE KEY  -
MIICzzBJB...
  -END ENCRYPTED PRIVATE KEY  -"""

privateKey = serialization.load_pem_private_key(
    pkcs8Encrypted, 
    b'mypassword',
    default_backend()
)

可以使用^{}导出PKCS#1格式、PEM编码的私钥(自版本0.2起):

pkcs1 = privateKey.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.TraditionalOpenSSL,
    encryption_algorithm=serialization.NoEncryption()
)

print(pkcs1.decode('utf-8')) #   -BEGIN RSA PRIVATE KEY  -... 

目前的加密版本是3.4.7(2021年3月)。2.8从2019年10月开始,sRelease history。实际上,这两种方法都应该是可用的

相关问题 更多 >