2013-01-17 80 views
1

我想實現使用OpenSSL數字簽名(PKCS7)能力(1.0.1版本)PKCS7加密算法。選擇摘要和OpenSSL中

我比較知道這一點。

使用的API:PKCS7_signPKCS7_verify, 我不知道如何設置一個特定的消化和/或用於簽名的加密算法。

PKCS7_sign依次調用PKCS7_sign_add_signer,其第四參數表示該摘要標識符,一直硬編碼爲NULL。這將意味着將使用默認的摘要算法。

所以我的問題是:

1)什麼是默認使用的摘要和加密算法?

2)有什麼辦法來設置這些默認值?如何做到這一點?

3)假設我籤一些數據並將其發送給對方。它如何知道簽名中使用的默認算法? [回答]

+0

1)查看文檔,2)它們被設置,這就是爲什麼他們是默認設置,但可以肯定他們覆蓋到任何你想要的(如SHA256例),最後3)閱讀PKCS7規範。作爲[PKCS#7加密消息語法標準](http://www.rsa.com/rsalabs/node.asp?id=2129)格式的一部分,OID將包含簽名算法和摘要算法。 – WhozCraig

+1

此外,與PKCS7_sign文檔註釋中的(1)相關,「如果指定了簽名者,它將使用簽名算法的默認摘要,對於RSA和DSA密鑰都是SHA1。」 – WhozCraig

回答

0

默認摘要算法是SHA-1,每OpenSSL documentation

用於簽名的「默認」算法取決於您爲signkey參數傳入的x509證書中存在的密鑰類型。一般來說,這將成爲RSA密鑰,但它也可以是DSA密鑰。