gpt4 book ai didi

c++ - 使用 Windows 密码学函数 C++ 对哈希进行签名

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:00:47 24 4
gpt4 key购买 nike

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

你好,我用一个很好的函数来签名CryptSignMessage .有了这个,我可以指定签名属性、签名者的证书、未签名的属性,如果是分离的等等。

但是,此函数的参数之一是“原始文档”,根据文档,它创建了指定内容的散列并对该散列进行签名

我想知道我是否可以只使用文档的散列来创建等效的签名。我没有文件,我只有散列。

我找到了 CryptSignHash , 但此函数不允许将参数指定为签名属性或未签名属性和/或签名者的证书。根据我的研究,这个函数似乎返回一个 PKCS#1,稍后我应该在其中设置签名 PKCS#7 的结构。因此,很高兴知道是否有任何方法可以使用哈希进行签名,以及是否可以使用 Windows 函数从 PKCS#1 创建 PKCS#7 结构。或者有什么方法可以只对散列进行签名,就像使用 CryptSignMessage 一样简单吗?

#update 1

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

有没有什么方法可以使用 Windows 函数来做到这一点?

最佳答案

在不自己计算哈希的情况下对哈希进行签名是个坏主意。参见 Sign a Hash , Generate digest and signature separately , 和 MFSA 2006-60 .

关于c++ - 使用 Windows 密码学函数 C++ 对哈希进行签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7675267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com