Bei einem Java ssh-rsa PublicKey, wie kann ich einen SSH2 öffentlichen Schlüssel bauen?

StackOverflow https://stackoverflow.com/questions/3588120

  •  01-10-2019
  •  | 
  •  

Frage

Ich mache publicKey.getEncoded (), dann "ssh-rsa" an die Front anhängt, dann base64 kodiert es. Dann füge ich die SSH2 Kopf- / Fußzeilen. Aber es wird nicht dekodieren ...

War es hilfreich?

Lösung

Java öffentlichen Schlüssel codiert sind als Standard X.509 SubjectPublicKeyInfo Struktur.

SSH2 verwendet ein eigenes einfaches Format. Base-64 kodieren das Ergebnis der encode Verfahren unten und bringt die notwendigen SSH2 Kopf- und Fußzeilen.

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);
}

finden Sie unter href="https://stackoverflow.com/a/19435226/3474"> die andere Richtung zum Umwandeln von OpenSSH auf Java.

scroll top