我正在使用visual studio 2005和C++。使用windows簽名哈希密碼函數C++
你好,我用一個很好的函數來簽字CryptSignMessage。通過這個,我可以指定簽名屬性,簽名人證書,無符號屬性,是否分離等等。
然而,這個函數的參數之一是「原文件」,其中根據文檔此創建指定內容的散列值,並簽署哈希
我不知道如果我能創造一個簽名等同,只使用文檔的散列。我沒有文件,我只有散列。
我發現CryptSignHash,但是此功能不允許指定參數作爲簽名屬性或無符號屬性和/或簽名人的證書。根據我的研究,這個函數似乎返回一個PKCS#1,後來我應該建立簽名PKCS#7的結構。因此,希望知道是否有任何方法可以對散列進行簽名,以及是否有方法使用Windows函數從PKCS#1創建PKCS#7結構。還是有什麼辦法只簽署散列,就像使用CryptSignMessage一樣簡單?
#UPDATE 1
的CryptSignHash不返回PKCS#1。用PKCS#1填充返回一個字節數組。
我試圖用CryptMsgOpenToEncode和CryptSignMessage作爲「NULL」傳遞內容,並將散列添加到簽名屬性中,他們計算出散列的散列。
是否有任何方式使用Windows功能來做到這一點?
只是說明:你不應該簽署你沒有見過的文件。這可能會產生重要的法律影響。 –
謝謝。此功能將防止帶寬消耗。 – Cobaia
如果您信任某人(即您的有限帶寬頻道另一端的人/節目/ ...),那麼您將簽署他發給您的任何內容(無論是散列還是整個文檔),您都可以幾乎直接把你的私鑰給他。 (我仍然會回答你的問題,但我對Windows加密API一無所知,抱歉。) –