用Windows加密签名加密函数C ++

时间:2011-10-06 13:52:41

标签: c++ visual-c++ cryptography

我正在使用visual studio 2005和C ++。

您好,我使用非常好的功能来签署CryptSignMessage。有了这个,我可以指定签名属性,签名证书,无符号属性,if是否已分离等等。

但是,此函数的一个参数是“原始文档”,根据文档,这将创建指定内容的哈希并签署哈希

我想知道是否可以仅使用文档的哈希创建签名等效项。我没有文件,我只有哈希。

我找到CryptSignHash,但此功能不允许将参数指定为签名属性或无符号属性和/或签名者证书。根据我的研究,这个函数似乎返回了PKCS#1,后来我应该建立一个签名PKCS#7的结构。因此,如果有办法使用Windows函数从PKCS#1创建PKCS#7结构,那么我们将不胜感激。或者有没有办法只签署哈希,这就像使用CryptSignMessage一样简单?

#update 1

CryptSignHash不会返回PKCS#1。返回带有PKCS#1填充的字节数组 我尝试使用CryptMsgOpenToEncodeCryptSignMessage将内容作为“NULL”传递并将哈希值添加到已签名的属性中,然后计算空的哈希值。

有没有办法使用Windows功能?

1 个答案:

答案 0 :(得分:0)

在不自己计算哈希的情况下签署哈希是一个坏主意。请参阅Sign a HashGenerate digest and signature separatelyMFSA 2006-60