C++ 使用CryptSignHash获取PKCS7签名

C++ 使用CryptSignHash获取PKCS7签名,c++,c,cryptography,cryptoapi,C++,C,Cryptography,Cryptoapi,可以通过在PCRYPT_SIGN_MESSAGE_PARA参数中传递适当的编码类型来生成PKCS7签名。但是我似乎找不到一种方法来对函数做同样的事情 是否有方法使用CryptSignHash API创建PKCS7签名,或者是否可以调用任何其他函数将CryptSignHash的输出转换为PKCS7?否,您无法将CryptSignHash的输出转换为CryptSignMessage的输出 CryptSignMessage创建用于创建数字签名的CMS容器格式。这不仅仅是签名的加密定义中的数字签名。首先

可以通过在PCRYPT_SIGN_MESSAGE_PARA参数中传递适当的编码类型来生成PKCS7签名。但是我似乎找不到一种方法来对函数做同样的事情


是否有方法使用CryptSignHash API创建PKCS7签名,或者是否可以调用任何其他函数将CryptSignHash的输出转换为PKCS7?

否,您无法将CryptSignHash的输出转换为CryptSignMessage的输出

CryptSignMessage创建用于创建数字签名的CMS容器格式。这不仅仅是签名的加密定义中的数字签名。首先对消息进行散列,然后对该散列+可能的其他信息进行散列和签名。因此,生成的签名不是对数据的直接签名

使用CryptSignHash,您可以直接对给定的哈希进行签名。该散列直接在数据上执行。因为散列是单向的,所以无法重建数据,因此无法执行CryptSignMessage所需的方案


简言之,尽管这些方法的名称似乎相似,但这两个函数都在不同的级别执行加密。一个只是加密原语,另一个是应用程序级协议。

PS对于仍以匿名名称发布的人来说,这是一个非常好的配置文件,希望我能提供一些帮助