[英]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.