我正在努力创造一个非常简单的& node.js。
的SSH协议的轻量级客户端实现以下文档完全让我困惑: http://www.snailbook.com/docs/transport.txt
它缺乏整个密钥交换事物的完整示例。有很多东西都有很好的解释,但我不确定如何将这些东西放在一起。
你能帮我一起举个例子吗?
我在第7.1节后被困住了。我成功收到了服务器的alorightms列表,并且我只向服务器发送了一个只包含所需算法的列表。也很成功。
所以,在这种情况下,我们有以下的alorightms:
之后,我跳过第7.2和7.3节并直接继续第8节,因为生成密钥需要值H& K,在第8节中生成。
但第8节对我没有意义。它需要客户和客户。服务器已经知道相同的素数,生成器和订单值。什么时候这些价值已经谈判并相互发送?第8节清楚地说它直接遵循算法交换,因此这些步骤之间没有任何内容...... 我错过了什么吗?
非常感谢你的帮助!
答案 0 :(得分:1)
素数由密钥交换算法指定。例如,引用您的来源:
“diffie-hellman-group1-sha1”方法指定与SHA-1作为HASH的Diffie-Hellman密钥交换,以及Oakley Group 2 [RFC2409](1024位MODP组)。
如果你咨询RFC 2409§6.2,你会发现:
素数为2 ^ 1024 - 2 ^ 960 - 1 + 2 ^ 64 * {[2 ^ 894 pi] + 129093}。它的十六进制值是
FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 FFFFFFFF FFFFFFFF生成器是2(十进制)