OpenSSL RSA签名和PKCS#1填充不正确的验证 我用Sh-1作为哈希函数,以PKCSα1填充为基础,从C++程序中与智能卡读卡器的接口生成一个RSA签名。我可以使用Java.security包通过一个简单的Java应用程序快速验证签名,而且效果很好

OpenSSL RSA签名和PKCS#1填充不正确的验证 我用Sh-1作为哈希函数,以PKCSα1填充为基础,从C++程序中与智能卡读卡器的接口生成一个RSA签名。我可以使用Java.security包通过一个简单的Java应用程序快速验证签名,而且效果很好,openssl,rsa,padding,digital-signature,Openssl,Rsa,Padding,Digital Signature,但是,当我尝试使用OpenSSL的EVP_PKEY_verify()时,它没有通过。如果我使用EVP_PKEY_verify_recover(),并比较原始数据的散列(通过一个简单的命令行调用)和verify_recover的结果,我会得到几乎相同的结果 SHA1(原始)=xyz 恢复(签名)=xyz0000000000 我想知道以前是否有人遇到过这个问题?我已经和它斗争了一段时间,尝试了不同的选项,并使用了我的sign()函数(它在Java中运行良好) 谢谢 结果表明,如果只使用EVP_Ver

但是,当我尝试使用OpenSSL的EVP_PKEY_verify()时,它没有通过。如果我使用EVP_PKEY_verify_recover(),并比较原始数据的散列(通过一个简单的命令行调用)和verify_recover的结果,我会得到几乎相同的结果

SHA1(原始)=xyz 恢复(签名)=xyz0000000000

我想知道以前是否有人遇到过这个问题?我已经和它斗争了一段时间,尝试了不同的选项,并使用了我的sign()函数(它在Java中运行良好)


谢谢

结果表明,如果只使用EVP_VerifyInit()/EVP_VerifyUpdate()/EVP_VerifyFinal(),它就可以工作。希望这能为其他人节省几天时间

只是猜测:不同的信任商店,即您信任的不同CA/发行人?嗨,丹尼尔!这不应该是一个问题-我使用相同的公共/私有密钥对。与证书无关。谢谢你!还可以使用ERR\u print\u errors\u fp检查错误并查看错误。它将为您提供有关错误的更多详细信息。