2015-06-15 60 views
1

我有下面這段代碼提取主機葉證書和證書RSA公鑰:如何使用Python M2Crypto提取RSA公開冪

c = ssock.getpeercert(True) 
x509 = M2Crypto.X509.load_cert_der_string(c) 
publickey=x509.get_pubkey() 
m=publickey.get_modulus() 

我試圖找到函數提取的公共指數RSA密鑰,但我找不到任何。你能幫我弄清楚如何提取RSA公鑰的公開指數?

編輯:如果不能通過M2Crypt。請用其他方式指出。

編輯2:當我試圖加載證書爲DER爲:

key = RSA.importKey(publickey.as_der()) 

我得到這個錯誤:

('file() argument 1 must be encoded string without NULL bytes, not str',)

我想避免保存證書在本地系統。我只是想提取模數和指數等信息。 我從錯誤理解的是,importKey函數將aregument爲DER文件不串。你能幫我找到解決方法嗎?

回答

1

此代碼應該給你的模量和公共指數:

import Crypto.PublicKey.RSA 

c = ssock.getpeercert(True) 
x509 = M2Crypto.X509.load_cert_der_string(c) 
publickey = x509.get_pubkey() 
key = Crypto.PublicKey.RSA.importKey(publickey.as_der()) 

modulus = key.n 
public_exponent = key.e 
+0

我不想模,因爲我已經從'MOD = pk.get_modulus得到它()'我想公開指數是正常命名爲'e'。 – user2192774

+0

它也沒有爲我提取'n'。你確定我把'c'發送給'importKey'? – user2192774

+0

我首先誤解了這個問題,並假設了一些事情。請參閱代碼的編輯版本。 –