publicKey.getEncoded()を実行してから、先頭に「ssh-rsa」を追加してから、base64でエンコードしています。次に、SSH2ヘッダー/フッターを追加します。しかし、それはデコードされません...
4278 次
1 に答える
19
Java公開鍵は、標準のX.509SubjectPublicKeyInfo構造としてエンコードされます。
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);
}
OpenSSHからJavaへの反対方向の変換については、この回答を参照してください。
于 2010-08-27T21:54:38.513 に答える