java - 哪种签名算法可以处理 RSA key ?

标签 java digital-signature

我开发了一个 Java RMI 应用程序。我已经为不同客户端和服务器之间的所有通信实现了混合加密。对于我的非对称 key ,我使用 RSA。现在我正在尝试使用 SignedObject 来实现签名类(class)。作为创建新的 SignedObject 时的第三个参数,我必须传递签名算法。我的问题是哪种签名算法与我已经实现的 RSA key 兼容?

目前我正在使用默认签名算法 DSA,如文档中所述。但是,在运行该应用程序时,我遇到以下错误:

TweetClient exception (publish): java.security.InvalidKeyException: No installed provider supports this key: sun.security.rsa.RSAPrivateCrtKeyImpl
java.security.InvalidKeyException: No installed provider supports this key: sun.security.rsa.RSAPrivateCrtKeyImpl
    at java.security.Signature$Delegate.chooseProvider(Signature.java:1138)
    at java.security.Signature$Delegate.engineInitSign(Signature.java:1179)
    at java.security.Signature.initSign(Signature.java:530)
    at java.security.SignedObject.sign(SignedObject.java:240)
    at java.security.SignedObject.<init>(SignedObject.java:160)
    at be.vub.parallellism.solutions.encryption.EncryptionUnit.encryptWithSecretKey(EncryptionUnit.java:80)
    at be.vub.parallellism.solutions.TweetClient.publish(TweetClient.java:137)
    at be.vub.parallellism.solutions.TweetClient.access$000(TweetClient.java:25)
    at be.vub.parallellism.solutions.TweetClient$1.run(TweetClient.java:126)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)

最佳答案

找到答案,“SHA256withRSA”可用于大小为256字节的RSA key 。

关于java - 哪种签名算法可以处理 RSA key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56510383/

相关文章:

java - 小程序在我的 IE8 和 firefox6.0.2 中无法运行

java - 开发模式服务器中的 GWT XML 配置解析错误

java - SHA256withRSA 和 SHA256 然后 RSA 之间的区别

java - XML 数字签名验证

java - 卡在递归 Fork/Join 上

java - 在静态对象上同步

javascript - 如何在客户端 JavaScript 中验证 HMAC 或 RSA-SHA 签名?

pdf - 无法使用Apache PDFBOX验证数字签名

javascript - 创建没有签名的 JWT token ?

java - 可以使用 cronj4 设置开始日期吗?