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 ...

¿Fue útil?

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
scroll top