Учитывая открытый ключ Java ssh-rsa, как я могу создать открытый ключ SSH2? - PullRequest
4 голосов
/ 28 августа 2010

Я делаю publicKey.getEncoded (), затем добавляю "ssh-rsa" впереди, затем base64 кодирую его.Затем я добавляю заголовок / колонтитул SSH2.Но это не расшифрует ...

1 Ответ

16 голосов
/ 28 августа 2010

Открытые ключи Java кодируются как стандартная структура X.509 SubjectPublicKeyInfo.

SSH2 использует свой собственный простой формат. Base-64 кодирует результат метода encode, показанного ниже, и прикрепляет необходимый заголовок и нижний колонтитул SSH2.

public static byte[] encode(RSAPublicKey key)
  throws IOException
{
  ByteArrayOutputStream buf = new ByteArrayOutputStream();
  byte[] name = "ssh-rsa".getBytes("US-ASCII");
  write(name, buf);
  write(key.getPublicExponent().toByteArray(), buf);
  write(key.getModulus().toByteArray(), buf);
  return buf.toByteArray();
}

private static void write(byte[] str, OutputStream os)
  throws IOException
{
  for (int shift = 24; shift >= 0; shift -= 8)
    os.write((str.length >>> shift) & 0xFF);
  os.write(str);
}

См. этот ответ для преобразования другого направления, из OpenSSH в Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...