Python 将私钥转换为 RSA 密钥
Python convert Private Key to RSA Key
我有一个私钥,格式如下
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIE6TAbBgkqhki....
----END ENCRYPTED PRIVATE KEY-----
如何将其转换为 RSA 格式的密钥
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA28jIsb8SAhJritwO....
-----END RSA PRIVATE KEY-----
我目前的密码学版本是2.8。非常感谢任何帮助。提前致谢。
如 Maarten Bodewes 的评论所述,使用 OpenSSL 可以将 PKCS#8 格式的加密私钥转换为 PKCS#1 格式的私钥(均为 PEM 编码)。但这也可以通过 Cryptography 库来完成。
Cryptography 库支持导入 PKCS#8 格式的(加密的)私钥,使用 PEM 编码,使用方法 load_pem_private_key()
(从版本 0.6 开始),例如:
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()
)
可以使用 private_bytes()
(自版本 0.2 起)以 PKCS#1 格式导出 PEM 编码的私钥:
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-----...
Cryptography 的当前版本是 3.4.7(2021 年 3 月)。 2.8 来自 2019 年 10 月,s。 Release history。实际上,这两种方法应该都可用。
我有一个私钥,格式如下
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIE6TAbBgkqhki....
----END ENCRYPTED PRIVATE KEY-----
如何将其转换为 RSA 格式的密钥
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA28jIsb8SAhJritwO....
-----END RSA PRIVATE KEY-----
我目前的密码学版本是2.8。非常感谢任何帮助。提前致谢。
如 Maarten Bodewes 的评论所述,使用 OpenSSL 可以将 PKCS#8 格式的加密私钥转换为 PKCS#1 格式的私钥(均为 PEM 编码)。但这也可以通过 Cryptography 库来完成。
Cryptography 库支持导入 PKCS#8 格式的(加密的)私钥,使用 PEM 编码,使用方法 load_pem_private_key()
(从版本 0.6 开始),例如:
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()
)
可以使用 private_bytes()
(自版本 0.2 起)以 PKCS#1 格式导出 PEM 编码的私钥:
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-----...
Cryptography 的当前版本是 3.4.7(2021 年 3 月)。 2.8 来自 2019 年 10 月,s。 Release history。实际上,这两种方法应该都可用。