【问题标题】:How do you extract N and E from a RSA public key in python?如何从 python 中的 RSA 公钥中提取 N 和 E?
【发布时间】:2017-07-19 03:33:31
【问题描述】:

我有一个 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 的文档,尚不清楚如何提取较小的组件。我该怎么做?

【问题讨论】:

    标签: python cryptography rsa public-key pycrypto


    【解决方案1】:

    例如,如果您的公钥在您的目录中保存为 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

    【讨论】:

      【解决方案2】:

      经过一个小时左右的游戏和谷歌搜索并没有在这里找到解决方案,这是非常简单的解决方案。这源于 python 对象的工作方式。

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

      当我们这样做时,这告诉我们什么

      pub_key = RSA.importKey()
      

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

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

      所以你只需要这样做:

      print pub_key.n
      print pub_key.e
      

      等等以从该对象访问这些变量。

      【讨论】:

        猜你喜欢
        • 2010-11-24
        • 1970-01-01
        • 2018-11-27
        • 1970-01-01
        • 2017-05-03
        • 2011-07-31
        • 2014-09-23
        • 2011-09-11
        • 2012-01-02
        相关资源
        最近更新 更多