Openssl rsault验证Java实现

时间:2017-10-04 12:39:28

标签: java openssl

例如我已生成签名:

$ openssl rsautl -sign -inkey private_key.pem -keyform PEM -in data > signature

然后,如果我想验证它,我只是这样做:

$ openssl rsautl -verify -inkey public_key.pem -in signature -pubin

输出将是我在第一步编码的数据。

所以问题是,如何用Java实现这个验证? 我可以以某种方式或任何其他方式使用Signature类吗?

P.S。还有一个问题:据我所知,公钥不能用于解密rsa签名,但无论如何,在我的例子中它用于此。那么拥有公钥的任何人都可以解密我的消息吗?

由于

1 个答案:

答案 0 :(得分:1)

显然LSTM使用相当于rsaautl签名方案,其中输入数据按原样被采用(假设为散列或短(长度<&lt; N))

签名验证:

NONEwithRSA

如果数据较长(例如长于公共密钥/散列长度),我建议使用散列签名,例如:

Signature signature = Signature.getInstance("NONEwithRSA");
signature.initVerify(pubKey);
signature.update(data);
boolean verified = signature.verify(signatureBytes);

通过Java验证

openssl dgst  -sha256 -sign private.pem data.txt | base64