java - Java 等效于“openssl rsautl -verify -out”
问题描述
我有一些使用以下内容签名的数据:
openssl rsautl -sign -in file -inkey PrivateKey.pem -out sig
然后可以使用以下方法恢复签名的数据:
openssl rsautl -pubin -inkey PublicKey.pem -verify -in sig -out file
我已将公钥转换为 Java PublicKey 对象,并查看了将其与 java.security 中的 Signature 类一起使用,但这似乎没有允许恢复原始签名数据的方法。
有没有办法使用 Java 恢复签名数据?
解决方案
正如 dave_thompson_085 在评论中所建议的那样,可以使用以下方法来恢复数据:
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, publicKey);
byte[] extractedBytes = cipher.doFinal(sig);
推荐阅读
- unicode - 有没有办法强制以我的字体将 RTL 字符写为 LTR
- azure - Azure webapp 部署
- android - inActiveTintColor 在标签栏中不起作用反应本机
- python - Python。代码重复多次,因为执行它的命令不同
- python - 如何将字节缓冲区从 Python 传递到 C
- mysql - SQL中的逐行操作
- postgresql - Postgres SQL 数组根据条件聚合单个表中的值
- .net - 如何获得 Winforms 表单的“真实”宽度 - 可见的实际像素数?
- javascript - 为什么我无法写入从数据库中获取的对象?
- amazon-web-services - 在 ubuntu 20.04 AWS EC2 节点上安装 nginx 时出现问题