我正在执行publicKey.getEncoded(),然后将“ SSH-RSA”附加到正面,然后将其编码为64。然后,我添加SSH2标头/页脚。但是它不会解码...

有帮助吗?

解决方案

Java公共钥匙被编码为标准X.509主题PublicKeyInfo结构。

SSH2使用自己的简单格式。基本-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。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top