首页 > 解决方案 > 用 NodeJS 理解 Diffie-Hellman

问题描述

// node.js 0.5 Diffie-Hellman example
var crypto = require("crypto");

// the prime is shared by everyone                                              
var server = crypto.createDiffieHellman(512);
var prime = server.getPrime();

// sharing secret key on a pair                                                 
var alice = crypto.createDiffieHellman(prime);
alice.generateKeys();
var alicePub = alice.getPublicKey();

var bob = crypto.createDiffieHellman(prime);
bob.generateKeys();
var bobPub = bob.getPublicKey();

var bobAliceSecret = bob.computeSecret(alicePub);
var aliceBobSecret = alice.computeSecret(bobPub); 

我试图了解如何将 NodeJS 加密库用于 diffie-hellman 实现,并获得上述代码来计算共享密钥。问题是 Alice 和 Bob 在获得共享素数后都生成了他们的密钥。我需要他们生成各自的密钥对,而不必使用任何共享信息,然后才能使用共享信息来计算共享秘密。我无法看到如何使用 NodeJS 加密库来完成。

标签: node.jscryptographydiffie-hellman

解决方案


我看到了你的困惑。

Diffie-Hellman 素数表示您在内部执行 DH 功能的一组数字(循环组),但它不是为每个人随机生成的。

在这里查看我的答案。

在密钥生成和静态之前,素数/组是已知的。

只使用了少数组,请参阅此处了解更多信息。

需要明确的是,为了生成相同的密钥,您只需要确保两个 ppl 都在具有相同 DH 参数的同一组内运行。


推荐阅读