5

我已经安装了openssl,现在rsa_test.c运行良好。我想做的是:

  1. 打开任何 exe 或 dll 数字证书。提取指纹公钥。公钥也包含指数(如果您熟悉 ASN1 编码)。

  2. 现在我已经计算了文件的SHA-1哈希值并将其与 MD 字段进行比较以发现它是正确的。所以现在我想将ThumbprintPublicKey->mPublicKey->e传递给RSA_public_decrypt函数来计算文件的解密SHA-1哈希值。

我应该将什么填充算法传递给函数?当我通过RSA_NO_PADDING时,它会解密但给我 128 字节长的散列,这根本不正确。对于所有其他填充算法选项,它返回未找到填充的错误。

请您教我或告诉我正确的参数以通过示例或良好的示例链接传递函数?

4

1 回答 1

3

您应该使用PKCS7_verify函数来验证整个 PKCS #7 signedData 块。

您需要两个步骤来完全验证签名(请参阅Microsoft 规范):

  1. 验证 PKCS #7 签名的完整性和身份。
  2. 计算消息摘要并将其与签名中指定的进行比较。

请注意,摘要不限于规范中的 SHA-1。摘要算法包含在签名的摘要算法字段中。

于 2012-10-16T22:06:12.517 回答