У меня возникла проблема с преобразованием строки, содержащей открытый ключ RSA, который я сгенерировал с помощью SSh-keygen в cygwin, в тип public_java java.security.Разница между генерируемым Java открытым ключом и сгенерированным ssh-keygen ключом
Вот код, я использую для преобразования ключей
BASE64Decoder decoder = new BASE64Decoder();
byte[] privBytes = decoder.decodeBuffer(publicKey);
KeyFactory keyFact = KeyFactory.getInstance("RSA");
PublicKey testKey = keyFact.generatePublic(new X509EncodedKeySpec(publicBytes));
Этот код дает мне эту ошибку
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format
При использовании этого ключа (генерируется через Cygwin)
AAAAB3NzaC1yc2EAAAADAQABAAABAQDQQ8K7FN3IvoLsgxyTHHidrhrp/4L1ts7fc5ooKi2lAw8pXYSseTH/ScS7qCCTTsBJ0DgdHdzjaHn8dTpOvud5Za0eiJtbPSyFmkNIwGYLXI/AnzF0sRNbSGmBeB/jQtRJBTS+1x5sVwOwGdx1jTx5m7yTmBjn9+/Hftke6UBY9dLKcRph2gpyRx1OWSFKC+mheBjpwGgapQNHFTPvhgQPp99HdGufBDiQWw4o4bIE7XIEyMpIt6KAsucbWSh67zYTaQjYzj8Bu3asCIlBy7KfdLWgrtgxddwtPjfYL3ZtGmhd3IiIwRdHQFHrJP0KbEejhJQF+2ApqFhL8yk+O3wL
Однако, когда я использую Java keygenerator для создания пары ключей, я могу преобразовать его в строку, сохранить его, и прочитайте его, используя тот же метод, и он работает. Я получаю открытый ключ, который выглядит, как этот
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCTK5ad+TnBo/N6FbPtFOtE4crvXkQUimp+gLLp
OA8QRpzTFD9zIV42695rYqmAHZRfBPA8TjEj9WXw0yRAIL3+hbHmOnLyrLfJ+5pD05B7ul83OKgV
mkLtZQacTNjX2iIeNd08ecP4+Chh/uE2dIRxHX1W00TZINySqxgW1cpjiwIDAQAB
Итак, я полагаю, что мой вопрос, в чем разница между этими двумя ключами, и как я могу успешно преобразовать первый в работоспособное объект PublicKey?
Возможно, вас заинтересует [этот вопрос] (http://stackoverflow.com/q/12749858/372643), почти дубликат. – Bruno