| ||||
| ||||
Подскажите, пожалуйста, возможные причины java.io.NotSerializableException: ru.CryptoPro.JCP.Key.f спасибо. | ||||
Ответы: | ||||
| ||||
Секретный ключ нельзя скидывать в поток, это специально сделано, иначе какой же он секретный, если его в открытои виде можно куда-нибудь отправить. | ||||
| ||||
спасибо! | ||||
| ||||
Еще раз спасибо за ответ, но не могли бы вы привести конкрентный пример, приводящий к подобной ошибке? | ||||
| ||||
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("GOST3410"); KeyPair pair = keyGen.generateKeyPair(); ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream("key")); stream.writeObject(pair.getPrivate()); | ||||
| ||||
Спасибо за ответ. То, что объект секретного ключа не может быть сериализован, логично, не смотря на то, что это накладывает определенные ограничения на разработку распределенных приложений. Но проблема в том, что NotSerializableException генерируется при попытке сериализации объекта открытого ключа: KeyPairGenerator keyGen = KeyPairGenerator.getInstance("GOST3410"); KeyPair pair = keyGen.generateKeyPair(); ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream("key")); stream.writeObject(pair.getPublic()); Почему нет возможности сериализовать объект открытого ключа, не совсем понятно. Используемая версия JCP 1.0.23. | ||||
| ||||
Почему нельзя сериализовать объект открытого ключа? Это совершенно не понятно, ведь полностью его структуру (SPKI) можно получить вызовом метода getEncoded(), это же по определению открытая информация, что мешает объекту быть сериализуемым? | ||||
| ||||
Сериализацию не делали потому что есть getEncoded(). Хранить открытые ключи в файле в явном виде - идея такая же плохая, как и с секретными. Но от этого не избавиться, такая уж Java. | ||||