我一直试图修复一个问题,但无数次都失败了。我需要使用方法,sign(),并且我已导入正确的库,但仍然无法识别它。
我用Python编写代码,这就是我看来很重要的东西:
#importing the library
from Crypto.Signature import PKCS1_PSS
[...]
signer = PKCS1_PSS.new(keypair)
sig = PKCS1_PSS.sign(keypair)
但是sign()方法是该库中整个代码中唯一无法识别的方法:
“此检查会检测应该解决的名称,但不会检测到。” 动态调度和鸭子打字,这是有限的但可能 有用的案件数量。支持顶级和类级别的项目 比实例项更好。“
有没有人对如何解决这个问题或者知道我做错了什么有任何建议?
答案 0 :(得分:5)
PKCS1_PSS的文档错误。它目前说:
from Crypto.Signature import PKCS1_PSS
from Crypto.Hash import SHA
from Crypto.PublicKey import RSA
from Crypto import Random
message = 'To be signed'
key = RSA.importKey(open('privkey.der').read())
h = SHA.new()
h.update(message)
signer = PKCS1_PSS.new(key)
signature = PKCS1_PSS.sign(key)
但它应该类似于PKCS1_v1_5
的文档from Crypto.Signature import PKCS1_PSS
from Crypto.Hash import SHA
from Crypto.PublicKey import RSA
from Crypto import Random
message = 'To be signed'
key = RSA.importKey(open('privkey.der').read())
h = SHA.new()
h.update(message)
signer = PKCS1_PSS.new(key)
signature = signer.sign(h)