2017-04-15 32 views
1

我一直在试图解决一个问题,但失败了无数次。我需要使用一个方法sign(),并且我已经导入了正确的库,但是它仍然没有被识别。PKCS1_PSS sign()方法

我编码在Python,这就是我,似乎很重要:

#importing the library 
from Crypto.Signature import PKCS1_PSS 

[...] 
signer = PKCS1_PSS.new(keypair) 
sig = PKCS1_PSS.sign(keypair) 

但sign()方法是在该库中的全部代码的唯一的事,不得到认可:

“这个检查检测应该可以解决,但不名由于 动态调度和鸭打字,这是一个有限的,但 有用病例数可能的顶层和类级别的项目。支持 bette而不是实例项目。“

有没有人有任何建议如何解决这个问题或知道我做错了什么?

回答

3

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) 
+0

的文档非常感谢您的回答^^ –