鉴于Java SSH-RSA PublicKey,如何构建SSH2公钥?
-
01-10-2019 - |
题
我正在执行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。
不隶属于 StackOverflow