2017-04-15 30 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

的文檔非常感謝您的回答^^ –