2009-12-02 94 views
0

使用安装了无限管理策略文件的Java 1.4.2。调试签名验证失败

我有一个已成功签名和验证的类。但是,现在我已经改变了密钥,并且突然验证失败。与生成

键:

openssl genrsa -aes256 -out production_private.pem 2048 
openssl pkcs8 -topk8 -nocrypt -in production_private.pem -outform der -out production_private.der 
openssl rsa -in production_private.pem -pubout -outform DER -out production_public.der 

我没有做使用使用PEM键和OpenSSL验证:

openssl dgst -sha1 -sign production_private.pem -out test.txt.sha1 test.txt 
Enter pass phrase for production_private.pem: 
openssl dgst -sha1 -verify production_public.pem -signature test.txt.sha1 test.txt 
Verified OK 

但它不会出现,你可以做,使用DER键。

没有错误发生。 Signature.verify只返回false。既然它可以用一套钥匙而不用另一套钥匙,我的假设是它必定是某种关键问题。

有关我如何验证密钥对是否正确的任何其他想法?我不想为了找出密钥是问题的根源寻找编码错误而自杀。

我很高兴根据要求分享源代码 - 我只是不想将问题混淆到必要时。

回答

0

原来完全没有关系。数据库程序正在破坏关键值。

0

默认密钥格式是PEM。您需要添加此参数才能使用DER,

-keyform DER 
+0

看起来不像它支持它。从文档: -keyform arg 指定签名摘要的密钥格式。 dgst命令仅支持PEM和ENGINE格式。 – wadesworld 2009-12-02 04:16:01