菜单

js_脚本之家

2020年3月23日 - 首页

js_脚本之家。简介

Diffie-Hellman是密钥调换算法之一,它的作用是承保通讯双方在非安全的信道中平安地交换密钥。方今DH最关键的接受场景之一,就是在HTTPS的抓手阶段,客商端、服务端利用DH算法沟通对称密钥。

上面会先简介DH的数理根底,然后比如表达怎么样在nodejs中运用DH相关的API。上面话非常的少说了,来合作拜访详细的牵线吧。

数论底蕴

要知道DH算法,须要通晓一定的数论根底。感兴趣的能够特别研讨推导进程,也许间接记住下边结论,然后进入下一节。

比如 Y = a^X mod
p,已知X的意况下,超轻便算出Y;已知道Y的情况下,很难算出X; ^Xb mod p =
a^ mod p

握手步骤表明

若是客商端、服务端挑选多少个素数a、p,然后

顾客端:接收自然数Xa,Ya = a^Xa mod p,并将Ya发送给服务端;
服务端:选取自然数Xb,Yb = a^Xb mod p,并将Yb发送给顾客端; 客商端:计算Ka = Yb^Xa mod p 服务端:总计 Kb = Ya^Xb mod p

Ka = Yb^Xa mod p= ^Xa mod p = a^ mod p= ^Xb mod p= Ya^Xb mod p= Kb

能够看出,固然客商端、服务端彼此不知道对方的Xa、Xb,但算出了万分的secret。

Nodejs代码示例

重新组合前边小结的牵线来看上边代码,当中,要点之一正是client、server采用类似的素数a、p。

var crypto = require;var primeLength = 1024; // 素数p的长度var generator = 5; // 素数a// 创建客户端的DH实例var client = crypto.createDiffieHellman(primeLength, generator);// 产生公、私钥对,Ya = a^Xa mod pvar clientKey = client.generateKeys();// 创建服务端的DH实例,采用跟客户端相同的素数a、pvar server = crypto.createDiffieHellman, client.getGenerator;// 产生公、私钥对,Yb = a^Xb mod pvar serverKey = server.generateKeys();// 计算 Ka = Yb^Xa mod pvar clientSecret = client.computeSecret);// 计算 Kb = Ya^Xb mod pvar serverSecret = server.computeSecret);// 由于素数p是动态生成的,所以每次打印都不一样// 但是 clientSecret === serverSecretconsole.log(clientSecret.toString;console.log(serverSecret.toString;

总结

如上正是那篇文章的全体内容了,希望本文的内容对大家的读书大概办事能推动一定的拉拉扯扯,假若有疑难我们能够留言沟通,多谢我们对剧本之家的支撑。

连带链接

清楚 Deffie-Hellman 密钥交流算法

Secure messages in NodeJSusing ECDH

Keyless SSL: The Nitty Gritty Technical Details

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图