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

通过.pub格式的公共密钥创建JSch HostKey实例

戈博易
2023-03-14
问题内容

我正在尝试使用JSch将文件从Windows机器发送到Linux机器。因此,我将主机公用密钥从Linux计算机复制到Windows计算机,然后将密钥添加到了Windows
XP HostKeyRepository。但是由于某种原因,我得到了“无效的密钥类型”异常。这是我的代码

HostKeyRepository repo = jsch.getHostKeyRepository();
File file = new File("D:\\Uni\\Arbeit\\ssh_host_rsa_key.pub");
byte[] HK = Files.readAllBytes(file.toPath());
Session session=jsch.getSession(user, host, 22);
session.setPassword(password);  
HostKey hk = new HostKey(null, HK); 
repo.add(hk, null);
session.connect();

问题答案:

.pub文件具有以下格式:

<type> <base64-encoded-public-key> <comment>

善有善报的HostKey构造是唯一的公钥部分,以二进制形式(不base64编码)。

使用JSch Util.fromBase64()base64-encoded-public-key零件转换为byte[]

static byte[] fromBase64(byte[] buf, int start, int length)

您还可以在中检查known_hosts文件解析的JSch实现KnownHosts.setKnownHosts(InputStream input)

known_hosts文件的格式与.pub文件相似,不同之处在于文件hostname的前面有一个附加部分,comment通常不包括:

<hostname> <type> <base64-encoded-public-key> [comment]

请注意,如果您知道要解析文件的一种特定格式,则您的实现不必如此复杂。



 类似资料:
  • 我使用PuTTY密钥生成器生成了一个4096位RSA-2密钥,其中包含一个密码短语。 我保存了. ppk和一个openSSL格式的公钥。油灰格式公钥不起作用。 无论如何,我的错误如下: 有什么问题吗? 我使用Pageant来加载密钥,我使用Git Bash来尝试ssh连接。我也把密钥加载到GitHub,不知道我做错了什么。 我尝试在GitHub中添加新行,但没有添加新行

  • 本文向大家介绍Zabbix通过PSK共享密钥实现Server和Agent的通信加密,包括了Zabbix通过PSK共享密钥实现Server和Agent的通信加密的使用技巧和注意事项,需要的朋友参考一下 Zabbix版本从3.0之后,开始支持Zabbix server, Zabbix proxy, Zabbix agent, zabbix_sender and zabbix_get之间的通信加密,加密

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

  • 我们需要使用Azure key vault创建RSA密钥对,并将RSA公钥复制到外部系统。其要求是外部系统使用公钥加密数据,内部系统与azure key vault对话并对数据进行解密。我还没有访问Azure key vault的权限,所以需要查看文档。我有两个基本问题: > 有没有一种方法可以使用Azure portal以文本格式导出RSA公钥,而不使用API(https://docs.micr

  • 我们在大型机中使用ICSF创建了一个RSA密钥对。十六进制格式生成的公钥大小为580个字符,结构分为 前缀-18字符(9字节)-3082010A02820100 公模-512 char(256 bytes)AA5DA28FEDADE7FEAD8C610E4C16E54FD415FEA173518BD9ADC3C7EB332E86E973B7F6E9BF90F277FD4B6A15E736C5668

  • 我试图从已经生成的密钥对(两个s)中提取1024位RSA公钥,以便通过网络发送。我只需要一个普通的对,它应该正好占用131字节(模128字节,指数3字节)。 但是,当我以对象的形式获取密钥信息时,我得到的是140位,而不是131位。下面是一个示例结果: 在多次重试密钥生成并比较生成的对象后,所有密钥保持不变的字节是前7个: 最后三个字节看起来像指数(65537,一个公共值)。模数和指数之间还有两个