Diffie-Hellman密钥交换算法的JavaScript实现
2017-08-21 22:41
686 查看
Diffie-Hellman密钥交换算法的JavaScript实现
由于js语言本身对数字的支持有限,对大数的计算需要借助math.js实现,算法本身公式较简单,但是结果有趣、应用广阔。这个实现借助DH算法产生50个A和B的共享密钥组成串并比对。<html> <head> <script src="https://cdn.bootcss.com/mathjs/3.16.1/math.js"></script> <script> math.config({ number: 'BigNumber', precision: 64 }); function calc(g,n,p) { return math.eval(g + "^" + n + " mod " + p).toFixed(); }; var q=19,a=15;//两个全局公开的参数,整数a是素数q的一个原根 function genAB(){ var aKey="",bKey=""; for(var i=0;i<50;i++){ var aSecretKey = Math.floor(Math.random()*q);//生成用户A的密钥(随机数,小于q) var APublicKey = calc(a,aSecretKey,q);//计算A的公开密钥 var bSecretKey = Math.floor(Math.random()*q); var BPublicKey = calc(a,bSecretKey,q); var aGenKeyCode = calc(BPublicKey,aSecretKey,q);//A产生共享密钥 var bGenKeyCode = calc(APublicKey,bSecretKey,q); aKey+=aGenKeyCode;bKey+=bGenKeyCode; } document.getElementById('aText').innerText = aKey; document.getElementById('bText').innerText = bKey; document.getElementById('abResult').innerText = (aKey == bKey); } </script> </head> <body> <div id="aText"></div> <div id="bText"></div> <div id="abResult"></div> <button onclick="genAB()">Gen</button> </body> </html>
相关文章推荐
- 客户端网络pomelo学习笔记 (3) node.js 与 c 客户端 Diffie-Hellman 密钥交换算法的实现客户端网络
- 对Diffie-Hellman密钥交换算法实现的一点改进
- pomelo学习笔记 (3) node.js 与 c 客户端 Diffie-Hellman 密钥交换算法的实现
- Diffie–Hellman密钥交换算法
- Python实现Diffie-Hellman密钥交换协议
- DH密钥交换(Diffie–Hellman key exchange)算法笔记
- 迪菲.赫尔曼(Diffie–Hellman)密钥交换算法
- Diffie-Hellman密钥交换算法的原理及程序演示
- Diffie-Hellman密钥交换算法简单理解
- Node.js如何使用Diffie-Hellman密钥交换算法详解
- Diffie-Hellman密钥交换算法
- Diffie-Hellman密钥交换算法
- Diffie-Hellman密钥交换算法及其优化
- Diffie-Hellman密钥交换算法及其优化
- Diffie-Hellman密钥交换算法及其优化
- DH密钥交换(Diffie–Hellman key exchange)算法笔记
- Diffie-Hellman 密钥交换算法
- 密钥交换算法DH(Java实现)
- Microsoft 安全公告 3174644-Diffie-Hellman 密钥交换的更新支持
- 迪菲-赫尔曼密钥交换(Diffie–Hellman)算法原理和PHP实现版