Я разработал приложение Java RMI.Я уже внедрил гибридное шифрование для всех коммуникаций между различными клиентами и серверами.Для моих асимметричных ключей я использую RSA.Сейчас я пытаюсь реализовать подписи, используя класс SignedObject .В качестве третьего параметра при создании нового SignedObject я должен передать алгоритм подписи.У меня вопрос, какой алгоритм подписи совместим для работы с моими уже реализованными ключами RSA?
В настоящее время я использую алгоритм подписи 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)