Bei einem Java ssh-rsa PublicKey, wie kann ich einen SSH2 öffentlichen Schlüssel bauen?
-
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 ...
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.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow