我已安装 openssl ,现在 rsa_test.c 运行正常。我想做的是:
打开任何exe或dll数字证书。提取指纹和 PublicKey 。 公钥也包含指数(如果您熟悉ASN1编码)。
现在我已经计算了文件的 SHA-1 哈希值,并将其与MD字段进行了比较,以确定它是否正确。所以现在我想将指纹, PublicKey-> m 和 PublicKey-> e 传递给 RSA_public_decrypt 用于计算文件的解密 SHA-1 哈希。
我应该将什么填充算法传递给函数?当我传递 RSA_NO_PADDING 时,它会解密,但会给我128字节长的哈希,这完全没有问题。对于所有其他填充算法选项,它返回未找到填充的错误。
请您教我或告诉我通过示例或示例的良好链接传递函数的正确参数?
答案 0 :(得分:1)
您应该使用PKCS7_verify函数来验证整个PKCS#7 signedData块。
您需要两个步骤才能完全验证签名(请参阅Microsoft specs):
请注意,摘要不限于规范中的SHA-1。摘要算法包含在签名中的digestAlgorithm字段中。