Dado un Java ssh-rsa PublicKey, ¿cómo puedo construir una clave pública SSH2?
-
01-10-2019 - |
Pregunta
Estoy haciendo publicKey.getEncoded (), a continuación, añadiendo "ssh-rsa" en la parte delantera, a continuación, base 64 que lo codifica. Luego agregar el SSH2 encabezado / pie de página. Pero no lo hará decodificación ...
Solución
claves públicas
Java se codifican como una estructura estándar X.509 SubjectPublicKeyInfo.
SSH2 utiliza su propio formato simple. Base-64 codifican el resultado del método encode
se muestra a continuación, y colocar la cabecera SSH2 necesario y pie de página.
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);
}
esta respuesta para convertir la otra dirección, de OpenSSH para Java.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow