给定Java ssh-rsa PublicKey,如何构建SSH2公钥?

piz*_*hut 5 java ssh-keys public-key

我正在做publicKey.getEncoded(),然后在前面添加"ssh-rsa",然后对其进行base64编码.然后我添加SSH2页眉/页脚.但它不会解码......

eri*_*son 17

Java公钥被编码为标准的X.509 SubjectPublicKeyInfo结构.

SSH2使用自己的简单格式.Base-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);
}
Run Code Online (Sandbox Code Playgroud)

有关将其他方向从OpenSSH转换为Java,请参阅此答案.

  • 一直在寻找这个代码示例的时间.谢谢!希望我能给你一些更多的声望点.:) (2认同)