我开发了一个 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/