0

我正在生成一些数据的 RSA 签名,使用 SHA-1 作为散列函数,使用 PKCS#1 填充作为填充方案,来自 C++ 中的程序与智能卡读卡器成功连接。我可以使用 java.security 包通过一个简单的 Java 应用程序快速验证签名,并且工作正常。

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

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

我想知道是否有人以前遇到过这个问题?我已经为此奋斗了一段时间,尝试了不同的选项并使用了我的 sign() 函数(这对 Java 来说很好用)。

谢谢!

4

1 回答 1

0

事实证明,如果您只使用 EVP_VerifyInit()/EVP_VerifyUpdate()/EVP_VerifyFinal() 代替,它可以工作。希望这可以节省其他人几天的时间!

于 2013-04-29T20:47:51.443 回答