2017-02-28 32 views
4

我有一個RSA公共密鑰,使得它看起來像如何從Python的RSA公鑰中提取N和E?

-----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----- 

我想找出模N和指數E是從這個關鍵,在Python?

使用pycrypto包,我能夠加載到密鑰這樣:

from Crypto.PublicKey import RSA 

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

但以下pycrypto's rsa module文檔目前還不清楚如何提取更小的組件。我該怎麼做呢?

回答

5

經過一個小時左右的玩耍和谷歌搜索,沒有找到解決方案這裏是一個非常簡單的解決方案。這源於python對象的工作方式。

當在文檔看,注意它是如何談到了keydata

這告訴我們,當我們做

pub_key = RSA.importKey() 

我們正在創造一個RSAobject。這個對象變量

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

所以,你只需要做:

print pub_key.n 
print pub_key.e 

等從該對象訪問這些變量。

0

例如,如果你的公鑰是在你的目錄保存爲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 

在解釋這樣做會顯示組件。