JS维吉尼亚密码算法实现代码
2023-06-13 09:14:25 时间
varVigenere={
_strCpr:"abcdefghijklmnopqrstuvwxyz_1234567890.ABCDEFGHIJKLMNOPQRSTUVWXYZ",//可以将此字符串的顺序打乱点,或者添加更多字符
_strKey:function(strK,str){//生成密钥字符串,strK为密钥,str为明文或者密文
varlenStrK=strK.length;
varlenStr=str.length;
if(lenStrK!=lenStr){//如果密钥长度与str不同,则需要生成密钥字符串
if(lenStrK<lenStr){//如果密钥长度比str短,则以不断重复密钥的方式生成密钥字符串
while(lenStrK<lenStr){
strK=strK+strK;
lenStrK=2*lenStrK;
}
}//此时,密钥字符串的长度大于或等于str长度
strK=strK.substring(0,lenStr);//将密钥字符串截取为与str等长的字符串
}
returnstrK;
}
}
Vigenere.lenCpr=Vigenere._strCpr.length;
Vigenere.Encrypt=function(K,P){//加密算法,K为密钥,P为明文
K=Vigenere._strKey(K,P);
varlenK=K.length;
varrlt="";
varloop=0;
for(loop=0;loop<lenK;loop++){
variP=Vigenere._strCpr.indexOf(P.charAt(loop));
if(iP==-1)return"本算法暂时不能对字符:"+P.charAt(loop)+"进行加密";
variK=Vigenere._strCpr.indexOf(K.charAt(loop));
if(iK==-1)return"密钥中包含非法字符:"+K.charAt(loop);
vari=(iP+iK)%Vigenere.lenCpr;
rlt=rlt+Vigenere._strCpr.charAt(i);
}
returnrlt;
};
Vigenere.DisEncrypt=function(K,C){
K=Vigenere._strKey(K,C);
varlenK=K.length;
varrlt="";
varloop=0;
for(loop=0;loop<lenK;loop++){
variK=Vigenere._strCpr.indexOf(K.charAt(loop));
if(iK==-1)return"密钥中包含非法字符:"+K.charAt(loop);
variC=Vigenere._strCpr.indexOf(C.charAt(loop));
if(iK>iC){
rlt+=Vigenere._strCpr.charAt(iC+Vigenere.lenCpr-iK);
}
else{
rlt+=Vigenere._strCpr.charAt(iC-iK);
}
}
returnrlt;
};
相关文章
- 暴力激活成功教程密码算法-JS
- php 中js跳转页面跳转页面,js跳转代码_PHP页面跳转 Js页面跳转代码[通俗易懂]
- Ubuntu 下安装 Node.js 最新版
- js正则表达式校验金额-正则表达式(密码验证、数字、字母数字)—实际开发持续积累中
- 原生 JS 实现 HTML 转 Markdown ,html2md.js
- 如何使用jscythe并通过Node.js的Inspector机制执行任意JS代码
- 使用html+css+js实现计算器详解编程语言
- 使用JS连接MySQL数据库:实现化繁为简(js连接mysql数据库)
- 利用js调用后台php进行数据处理原码
- js在客户端验证密码强度,兼容FireFox和IE
- js双色时间效果代码
- js验证符合用户体验的网页表单特效
- js获取.aspx页面里面的服务器控件和.ascx中的服务器控件值
- RGB颜色值转HTML十六进制(HEX)代码的JS函数
- 上传图片时JS自动显示图片
- JQuery中关于jquery.js与jquery.min.js的比较探讨
- Js+Jq获取URL参数的集中方法示例代码
- node.js中的fs.realpathSync方法使用说明