Java在openssl中验证数字签名

时间:2017-01-28 11:20:20

标签: java openssl digital-signature verify

使用this教程,我创建了一个Java程序,可以使用SHA256withRSA算法对文档进行签名。在输出中,我得到一个公钥和一个签名文件。

我尝试用openssl验证我的文件,但我不能......我在网上搜索,我发现我需要一个标准的.pem键,所以我的问题是:我怎样才能转换我对pem格式的关键?或者我可以在Java中生成.pem键吗?如果这是一种错误的方式,我该如何验证我的签名呢?

1 个答案:

答案 0 :(得分:1)

PEM文件包含以base64编码的公钥二进制数据,并以64个字符的行分割。该文件还包含标题-----BEGIN PUBLIC KEY-----和页脚-----END PUBLIC KEY-----

Java没有PEM的原生转换器,但您可以使用bouncycastle

PEMWriter pemWriter = new PEMWriter(new FileWriter(file));
pemWriter.writeObject(publicKey);
pemWriter.flush();
pemWriter.close();

或者,您可以使用

使用二进制密钥格式使用openssl验证签名
  -keyform DER

然后将publicKey的内容保存在文件

 byte publicKeyDer[] = publicKey.getEncoded()