我正在生成一些数据的 RSA 签名,使用 SHA-1 作为散列函数,使用 PKCS#1 填充作为填充方案,来自 C++ 中的程序与智能卡读卡器成功连接。我可以使用 java.security 包通过一个简单的 Java 应用程序快速验证签名,并且工作正常。
但是,当我尝试使用 OpenSSL 的 EVP_PKEY_verify() 时,它没有通过。如果我使用 EVP_PKEY_verify_recover(),并比较原始数据的哈希值(通过一个简单的命令行调用)和 verify_recover 的结果,我得到〜几乎〜相同的东西。
SHA1(原始)= xyz 恢复(签名)= xyz0000000000 ...
我想知道是否有人以前遇到过这个问题?我已经为此奋斗了一段时间,尝试了不同的选项并使用了我的 sign() 函数(这对 Java 来说很好用)。
谢谢!