如何从 python 中的 RSA public 密钥中提取 N 和 E?
How do you extract N and E from a RSA public key in python?
我有一个 RSA public 密钥,看起来像
-----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 的文档,不清楚如何提取较小的组件。我该怎么做?
经过一个小时左右的尝试和谷歌搜索后,在这里找不到解决方案是真正简单的解决方案。这源于 python 对象的工作方式。
查看文档时,请注意它是如何谈论 keydata
这告诉我们当我们这样做时
pub_key = RSA.importKey()
我们正在创建一个 RSA 对象。这个对象有变量
['n', 'e', 'd', 'p', 'q', 'u']
所以你只需要做:
print pub_key.n
print pub_key.e
依此类推以从该对象访问这些变量。
例如,如果您的 public 密钥在您的目录中保存为 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
在解释器中执行此操作将显示组件。
安装 Crypto 使用这个:
pip install pycryptodome
我有一个 RSA public 密钥,看起来像
-----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 的文档,不清楚如何提取较小的组件。我该怎么做?
经过一个小时左右的尝试和谷歌搜索后,在这里找不到解决方案是真正简单的解决方案。这源于 python 对象的工作方式。
查看文档时,请注意它是如何谈论 keydata
这告诉我们当我们这样做时
pub_key = RSA.importKey()
我们正在创建一个 RSA 对象。这个对象有变量
['n', 'e', 'd', 'p', 'q', 'u']
所以你只需要做:
print pub_key.n
print pub_key.e
依此类推以从该对象访问这些变量。
例如,如果您的 public 密钥在您的目录中保存为 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
在解释器中执行此操作将显示组件。
安装 Crypto 使用这个:
pip install pycryptodome