gpt4 book ai didi

python - 如何读取 PEM + PKCS#1 格式的 RSA 公钥

转载 作者:IT老高 更新时间:2023-10-28 22:15:53 28 4
gpt4 key购买 nike

我有一个 PEM 格式的 RSA 公钥 + PKCS#1(我猜):

-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAJNrHWRFgWLqgzSmLBq2G89exgi/Jk1NWhbFB9gHc9MLORmP3BOCJS9k
onzT/+Dk1hdZf00JGgZeuJGoXK9PX3CIKQKRQRHpi5e1vmOCrmHN5VMOxGO4d+zn
JDEbNHODZR4HzsSdpQ9SGMSx7raJJedEIbr0IP6DgnWgiA7R1mUdAgMBAAE=
-----END RSA PUBLIC KEY-----

我想在 Python 中获取其 ASN1 编码版本的 SHA1 摘要。第一步应该是读取这个 key ,但是我在 PyCrypto 中没有这样做:

>> from Crypto.PublicKey import RSA
>> RSA.importKey(my_key)
ValueError: RSA key format is not supported

documentation of PyCrypto说支持 PEM + PKCS#1,所以我很困惑。我也试过 M2Crypto,但事实证明 M2Crypto 不支持 PKCS#1,只支持 X.509。

最佳答案

PyCrypto 支持 PKCS#1,因为它可以读取 X.509 SubjectPublicKeyInfo 对象,包含 RSA 公钥编码在PKCS#1.

相反,在您的 key 中编码的数据是一个纯 RSAPublicKey 对象(即具有两个整数、模数和公共(public)指数的 ASN.1 SEQUENCE)。

您仍然可以阅读它。尝试类似:

from Crypto.PublicKey import RSA
from Crypto.Util import asn1
from base64 import b64decode

key64 = 'MIGJAoGBAJNrHWRFgWLqgzSmLBq2G89exgi/Jk1NWhbFB9gHc9MLORmP3BOCJS9k\
onzT/+Dk1hdZf00JGgZeuJGoXK9PX3CIKQKRQRHpi5e1vmOCrmHN5VMOxGO4d+znJDEbNHOD\
ZR4HzsSdpQ9SGMSx7raJJedEIbr0IP6DgnWgiA7R1mUdAgMBAAE='

keyDER = b64decode(key64)
seq = asn1.DerSequence()
seq.decode(keyDER)
keyPub = RSA.construct( (seq[0], seq[1]) )

从 2.6 版开始,PyCrypto 还可以导入 RsaPublicKey ASN.1 对象。代码就简单多了:

from Crypto.PublicKey import RSA
from base64 import b64decode

key64 = b'MIGJAoGBAJNrHWRFgWLqgzSmLBq2G89exgi/Jk1NWhbFB9gHc9MLORmP3BOCJS9k\
onzT/+Dk1hdZf00JGgZeuJGoXK9PX3CIKQKRQRHpi5e1vmOCrmHN5VMOxGO4d+znJDEbNHOD\
ZR4HzsSdpQ9SGMSx7raJJedEIbr0IP6DgnWgiA7R1mUdAgMBAAE='

keyDER = b64decode(key64)
keyPub = RSA.importKey(keyDER)

关于python - 如何读取 PEM + PKCS#1 格式的 RSA 公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10569189/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com