如何从python中的RSA公钥中提取N和E?

2024-04-20 12:05:38 发布

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

我有一个RSA公钥

-----BEGIN PUBLIC KEY-----
MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEAvm0WYXg6mJc5GOWJ+5jk
htbBOe0gyTlujRER++cvKOxbIdg8So3mV1eASEHxqSnp5lGa8R9Pyxz3iaZpBCBB
vDB7Fbbe5koVTmt+K06o96ki1/4NbHGyRVL/x5fFiVuTVfmk+GZNakH5dXDq0fwv
JyVmUtGYAiMJWPni2hGpAsbyjzLix9UNX5XiYIIrIr55IHtD5u1XNkmYLOdVQ98r
6hez3t2eaE0pP2k+mjRach+2tD93PBZmreHgVZtejumi+ZWLMqpd++AY0AzH0m8E
6sa8JFUAiYZbVtmrcGTCUCkzC2Es1/knSeZ41xki1qD0V3uw/APP8Q+BgbX3SJp0
EQIBAw==
-----END PUBLIC KEY-----

我想在python中找出这个键的模N和指数E是什么?

使用pycrypto包,我可以加载到密钥:

from Crypto.PublicKey import RSA

# read the public key in:
public_key = RSA.importKey(open('key.pub', 'r').read())

但是根据pycrypto's rsa module的文档,还不清楚如何提取较小的组件。我该怎么做?


Tags: keyreadpublicrsa公钥beginpycryptohtbboe0gytlujrer
2条回答

经过一个小时左右的闲逛和谷歌搜索,在这里找不到解决方案是真正简单的解决方案。这源于python对象的工作方式。

在查看文档时,请注意它是如何谈到keydata

当我们这样做的时候

pub_key = RSA.importKey()

我们正在创建一个RSAobject。这个对象有变量

['n', 'e', 'd', 'p', 'q', 'u']

所以你只要做:

print pub_key.n
print pub_key.e

等等,从那个对象访问这些变量。

例如,如果您的公钥保存为目录中的alicepublic.pem:

>>>from Crypto.PublicKey import RSA
>>>f = open("alicepublic.pem", "r")
>>>key = RSA.importKey(f.read())
>>>print key.n #displays n
>>>print key.e #displays e

在解释器中执行此操作将显示组件。

相关问题 更多 >