您好,欢迎访问一九零五行业门户网

JS维吉尼亚密码算法实现代码_javascript技巧

复制代码 代码如下:
var vigenere = {
_strcpr: 'abcdefghijklmnopqrstuvwxyz_12345 67890.abcdefghijklmnopqrstuvwxyz',//可以将此字符串的顺序打乱点,或者添加更多字符
_strkey: function(strk,str){//生成密钥字符串,strk为密钥,str为明文或者密文
var lenstrk = strk.length;
var lenstr = str.length;
if(lenstrk != lenstr){//如果密钥长度与str不同,则需要生成密钥字符串
if(lenstrk while(lenstrk strk = strk + strk;
lenstrk = 2 * lenstrk;
}
}//此时,密钥字符串的长度大于或等于str长度
strk = strk.substring(0,lenstr);//将密钥字符串截取为与str等长的字符串
}
return strk;
}
}
vigenere.lencpr = vigenere._strcpr.length;
vigenere.encrypt = function(k,p){//加密算法,k为密钥,p为明文
k = vigenere._strkey(k,p);
var lenk = k.length;
var rlt = '';
var loop = 0;
for(loop=0; loopvar ip = vigenere._strcpr.indexof(p.charat(loop));
if(ip==-1) return '本算法暂时不能对字符:' + p.charat(loop) + '进行加密';
var ik = vigenere._strcpr.indexof(k.charat(loop));
if(ik==-1) return '密钥中包含非法字符:' + k.charat(loop);
var i = (ip + ik) % vigenere.lencpr;
rlt = rlt + vigenere._strcpr.charat(i);
}
return rlt;
};
vigenere.disencrypt = function(k,c){
k = vigenere._strkey(k,c);
var lenk = k.length;
var rlt = '';
var loop = 0;
for(loop=0; loopvar ik = vigenere._strcpr.indexof(k.charat(loop));
if(ik==-1) return '密钥中包含非法字符:' + k.charat(loop);
var ic = vigenere._strcpr.indexof(c.charat(loop));
if(ik > ic){
rlt += vigenere._strcpr.charat(ic + vigenere.lencpr - ik);
}
else{
rlt += vigenere._strcpr.charat(ic - ik);
}
}
return rlt;
};
其它类似信息

推荐信息