OpenSSL RSA 签名和 PKCS#1 填充验证不正确

问题描述 投票:0回答:1

我正在使用 SHA-1 作为哈希函数,使用 PKCS#1 填充作为填充方案,从成功与智能卡读卡器接口的 C++ 程序中生成一些数据的 RSA 签名。我可以使用 java.security 包通过一个简单的 Java 应用程序快速验证签名,而且效果很好。

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

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

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

谢谢!

openssl rsa padding digital-signature
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.