【问题标题】:Python: How to verify sha1 rsa signature with pyopenssl?Python:如何使用 pyopenssl 验证 sha1 rsa 签名?
【发布时间】:2016-09-07 09:04:56
【问题描述】:

我用这个方法:

从 OpenSSL 导入加密

cert = crypto.load_certificate(crypto.FILETYPE_PEM, open('pubkey.pem', 'rt').read())
crypto.verify(cert, sign_code, data, 'sha1)

但是,当我加载证书时,它显示错误:

Traceback (most recent call last):
  File "alipay.py", line 77, in <module>
    qrpay = Qrpay()
  File "alipay.py", line 32, in __init__
    self.cert = crypto.load_certificate(crypto.FILETYPE_PEM, '123')
  File "/usr/local/lib/python3.5/dist-packages/OpenSSL/crypto.py", line 1647, in load_certificate
    _raise_current_error()
  File "/usr/local/lib/python3.5/dist-packages/OpenSSL/_util.py", line 48, in exception_from_error_queue
    raise exception_type(errors)
OpenSSL.crypto.Error: [('PEM routines', 'PEM_read_bio', 'no start line')]

但是,如果我加载公钥,它是成功的:

crypto.load_publickey(crypto.FILETYPE_PEM, open('pubkey.pem', 'rt').read())

是不是我做错了什么?

或者是否有其他方法可以进行验证?

【问题讨论】:

    标签: python pyopenssl


    【解决方案1】:

    希望我的发现可以帮助仍在寻找答案的人们。问题在于文件 pubkey.pem。即使在许多情况下,公钥与证书相同,但文件的格式却不同。

    要使用方法load_certificate,文件必须以-----BEGIN CERTIFICATE-----开头

    要使用load_publickey,文件必须以-----BEGIN PUBLIC KEY-----开头

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 1970-01-01
      • 2016-01-08
      • 2012-01-16
      相关资源
      最近更新 更多