【问题标题】:Verify and decrypt signature generated with a pvk.key and BouncyCastle crypto apis验证和解密使用 pvk.key 和 BouncyCastle 加密 API 生成的签名
【发布时间】:2012-01-30 01:43:08
【问题描述】:

我有一个小程序,它使用“foo.key”文件和字符串密码来生成 privateKey 对象,使用 BouncyCastle api。然后使用此 privateKey 对象和诸如“MYNAMEHERE”之类的字符串创建签名。我所知道的是用于生成此签名的算法是 RSA。

我想做的是在 PHP 中解密(或验证)这个签名。我有两个文件 publicKey (file.cer) 和 privateKey (file.key) 用于在 Java 中生成 privateKey 对象。

我尝试在 PHP 中使用 openssl_verify 函数,传递值:
openssl_verify("MYNAMEHERE", $signature, "file.cer"),其中$signature包含Java生成的签名对象的String表示:new String(signature)。

我不知道这个过程是否正确验证签名,或者在使用这个功能之前我需要做什么样的编码/解码过程。

希望有人指出正确的方向!

提前致谢!

【问题讨论】:

  • +1 将充气城堡纳入标题...
  • @DigitalPrecision 这不是一个很有建设性的评论,尽量不要讽刺
  • 这个问题缺乏细节,尽量提供尽可能多的信息
  • @owlstead:只是个开玩笑的人,放轻松。

标签: php encryption openssl bouncycastle public-key


【解决方案1】:

您没有提供足够的信息,例如实际签名或其编码方式。通常 RSA 表示 PKCS#1 1.5 模式下使用 SHA-1(Google it)的 RSA,这或多或少是当今使用的默认签名生成/验证算法。在这种情况下,验证应该按照您的描述进行。不再需要密码,它可能只是用来解密私钥。您仍然可以使用私钥来查看 PHP/openssl 中的登录是否确实创建了相同的数据。如果不是,则可能使用了不同的哈希或 PKCS#1 v2.1 签名。

【讨论】:

  • 感谢@owlstead 回复@owlstead 在尝试了 PHP 中的一些不同功能后,我被困在了那个领域,所以我也选择在 Java 中进行验证,但我仍然无法找出签名的方式创建(因为生成密钥的不是我)。我有两个文件,.key 和 .cer。用 privateKey 签署简单字符串(如:“HELLOWORLD”)然后用 .cer 文件验证它的最佳方法是什么?我希望你能再次帮助我,提前谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 2015-11-23
  • 2012-06-02
  • 2016-10-20
  • 1970-01-01
  • 2017-02-27
  • 2011-10-22
相关资源
最近更新 更多