使用安装了无限管辖区策略文件的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
答案 1 :(得分:0)
原来完全没有关系。数据库程序破坏了关键值。