簡體   English   中英

你如何從python中的RSA公鑰中提取N和E?

[英]How do you extract N and E from a RSA public key in 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-----

我想找出這個鍵的模 N 和指數 E 是什么,在 python 中?

使用 pycrypto 包,我可以像這樣加載到密鑰:

from Crypto.PublicKey import RSA

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

但是按照pycrypto 的 rsa 模塊的文檔,不清楚如何提取較小的組件。 我該怎么做呢?

經過一個小時左右的玩耍和谷歌搜索並沒有找到解決方案,這是一個非常簡單的解決方案。 這源於 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

在解釋器中執行此操作將顯示組件。

安裝 Crypto 使用這個: pip install pycryptodome

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM