您的位置:首页 > Web前端 > JavaScript

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript DH算法 算法