簡體   English   中英

Python:如何使用 pyopenssl 驗證 sha1 rsa 簽名?

[英]Python: How to verify sha1 rsa signature with pyopenssl?

我用這個方法:

從 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())

我做錯了什么嗎?

或者是否有其他方法進行驗證?

希望我的發現可以幫助仍在尋找答案的人們。 問題在於文件pubkey.pem 盡管在許多情況下公鑰與證書相同,但文件的格式是不同的。

要使用方法load_certificate ,文件必須以-----BEGIN CERTIFICATE-----開頭

要使用load_publickey,文件必須以-----BEGIN PUBLIC KEY----- KEY--開頭

暫無
暫無

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

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