当前位置: 首页 > 面试题库 >

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

茅桐
2023-03-14
问题内容

我正在做publicKey.getEncoded(),然后在前面附加“ ssh-
rsa”,然后对它进行base64编码。然后添加SSH2标头/页脚。但是不会解码…


问题答案:

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);
}

有关将其他方向从OpenSSH转换为Java的信息,请参见此答案。



 类似资料:
  • 我正在努力从公钥的字符串表示创建ECDSA公钥,即 以前我发现我必须给这个键加上前缀' 04 ',所以不确定这次是否需要这样做? 我正在尝试生成它以用于验证签名 其中要签名的数据是 我现在的粗略代码如下 这是切碎在一起的,所以不能建造。任何帮助都很好 PS我在这里问了一个类似的关于私钥的问题给定曲线和私钥指数的ECDSA私钥的创建?

  • 问题内容: 马克·墨菲(Mark Murphy)在他的博客上很好地说明了应将哪些信息排除在公共存储库之外。密钥材料(例如用于各种服务的OAuth密钥或API密钥)就是一个很好的例子。 有问题的应用程序将是移动android应用程序,因此有人对其进行反编译以获取秘密密钥不在此问题范围内。 如何配置公共CI实例(例如cloudbees)上的构建作业,以使机密不泄漏到构建日志或编译目录中?我的主要目的是

  • 我想得到一个文件内容的公钥,这是一个文件内容看起来像什么的例子(用生成): 如果我是对的,这不是公钥,但是可以从这个字符串中获取公钥。 这个答案回答了我的问题https://stackoverflow.com/a/19387517/2735398 但答案似乎不起作用。我有个例外: 当看到答案的评论时,我不是唯一有问题的人... 如何修复异常?或者有没有其他方法可以从字符串中获取公钥?

  • 需要在给定的64字节公钥(他们的)和32字节的私钥(我们的)之间共享秘密。 我有由外部提供商生产的密钥(P-256 ECC代码)。公钥为 64 字节,私钥为 32 字节。 我不知道如何让BouncyCastle导入这些密钥。它似乎期望DER编码的密钥,但这不是我必须使用的。 我的期望是加密/密钥代码可以处理32和64字节的密钥数组。在处理嵌入式设备和其他代码空间有限的领域时,无法处理包装/DER/

  • 我试图使用提供的ssh密钥在远程服务器上运行我的Anable剧本。 我已将以下配置添加到我的清单文件: 我在我的剧本中引用了以下内容: 我使用以下命令运行脚本: 我得到的错误如下: 致命:[server1]:无法访问= 我的在我的库存文件中是错误的还是我称之为错误的?帮助会很好

  • 链接 依赖注入 会话管理 缓存管理 日志管理 设置管理 时间与时区设置 对象之间的映射(AutoMapper集成) 邮件发送(MailKit集成)