0

私は diffie hellman 鍵交換がどのように機能するかを理解しようとしており、簡単な node.js プログラムを作成してテストを行いました。

var crypto = require("crypto");

//create a public & private key for alice
var Alice = crypto.createDiffieHellman(512);
Alice.generateKeys();

//create a public & private key for bob
var Bob = crypto.createDiffieHellman(512);
Bob.generateKeys();

//let bob and alice compute the shared secret
console.log(Alice.computeSecret(Bob.getPublicKey()).toString("hex"));
console.log(Bob.computeSecret(Alice.getPublicKey()).toString("hex"));

このウィキペディアの記事の正しいグラフィックを正しく理解していれば、両方の秘密は同じであるはずです。しかし、決してそうではありません。なぜですか?

4

1 に答える 1

0

ああ、私はすでに解決策を見つけました:

var crypto = require("crypto");

var prime = crypto.createDiffieHellman(512).getPrime();

//create a public & private key for alice
var Alice = crypto.createDiffieHellman(prime);
Alice.generateKeys();

//create a public & private key for bob
var Bob = crypto.createDiffieHellman(prime);
Bob.generateKeys();

//let bob and alice compute the shared secret
console.log(Alice.computeSecret(Bob.getPublicKey()).toString("hex"));
console.log(Bob.computeSecret(Alice.getPublicKey()).toString("hex"));
于 2013-06-14T14:30:48.933 に答える