【问题标题】:Getting a PKCS#7 signature with CryptSignHash使用 CryptSignHash 获取 PKCS#7 签名
【发布时间】:2015-01-16 12:32:58
【问题描述】:

CryptSignMessage 可以通过在 PCRYPT_SIGN_MESSAGE_PARA 参数中传递适当的编码类型来生成 PKCS#7 签名。但我似乎找不到用CryptSignHash 函数做同样事情的方法。

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

【问题讨论】:

    标签: c++ c cryptography cryptoapi


    【解决方案1】:

    不,您不能将CryptSignHash 的输出转换为CryptSignMessage 的输出。

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

    使用CryptSignHash,您可以直接签署给定的哈希值。并且该哈希直接在数据上执行。因为哈希是一种方式,所以无法重构数据,所以无法执行CryptSignMessage要求的方案。

    简而言之,虽然这些方法的名称看起来很相似,但两个函数都在不同的级别上执行加密。一个只是加密原语,另一个是应用层协议。

    【讨论】:

    • PS 对于仍然以如此匿名的名字发帖的人来说,这是一个非常好的个人资料,希望我能有所帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    相关资源
    最近更新 更多