2013-04-29 202 views
0

我正在生成一些数据的RSA签名,使用SHA-1作为哈希函数,以及PKCS#1填充作为填充方案,从C++中的程序与智能卡读卡器成功。我可以通过使用java.security包的简单Java应用程序快速验证签名,它工作正常。OpenSSL RSA签名和PKCS#1填充不正确验证

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

SHA1(原件)= XYZ 恢复(署名)= xyz0000000000 ...

如果有人遇到过这个问题,我想知道?我一直在争取它一段时间,尝试不同的选择,并使用我的sign()函数(这对Java来说工作正常)。

谢谢!

+0

只是一个猜测:不同的信任库,即您信任的不同CA /发行者? – 2013-04-29 17:55:02

+0

嗨丹尼尔!这不应该是一个问题 - 我使用相同的公/私钥对。与证书无关。虽然谢谢! – ZachM 2013-04-29 19:27:25

+0

还使用ERR_print_errors_fp检查错误并查看错误。它会给你更多关于错误的细节。 – doptimusprime 2013-04-30 03:48:39

回答

0

原来,如果您只是使用EVP_VerifyInit()/ EVP_VerifyUpdate()/ EVP_VerifyFinal()来代替,它就会起作用。希望这可以节省几天的其他人!

相关问题