【发布时间】:2023-04-06 18:26:01
【问题描述】:
我有一些数据已使用如下方式签名:
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 恢复签名数据?
【问题讨论】:
-
@DenisS.+ RSA 签名/验证与加密/解密不同;这在 crypto.SX 和 security.SX 上反复讨论。但是由于最初误导人们的数学对称性,Java(AFAICT 未记录)允许 SunJCE
Cipher.getInstance("RSA")成为.init(DECRYPT_MODE, RSAPublicKey),然后执行此处所需的部分 PKCS1v1.5“恢复”操作。 (openssl rsautl不执行标准 RSASSA-PKCS1v1_5 所需的 ASN.1 编码/解码;openssl pkeyutl (RSAkey) -pkeyopt digest:$dig或openssl dgst -sign/verify (RSA)可以。请参阅许多现有的 Q。)
标签: java openssl rsa digital-signature