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


Posted in Javascript onNovember 09, 2010
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 < lenStr){//如果密钥长度比str短,则以不断重复密钥的方式生成密钥字符串 
while(lenStrK < lenStr){ 
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; loop<lenK; loop++){ 
var 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; loop<lenK; loop++){ 
var 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; 
};
Javascript 相关文章推荐
javascript document.referrer 用法
Apr 30 Javascript
jquery插件制作 表单验证实现代码
Aug 17 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
Jun 20 Javascript
Javascript刷新窗口方法小结
Oct 21 Javascript
jquery实现表格隔行换色效果
Nov 19 Javascript
JS原型对象的创建方法详解
Jun 16 Javascript
angular基于路由控制ui-router实现系统权限控制
Sep 27 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
Oct 26 Javascript
微信小程序 聊天室简单实现
Apr 19 Javascript
vue-router实现组件间的跳转(参数传递)
Nov 07 Javascript
npm scripts 使用指南详解
Oct 08 Javascript
layui 实现表格某一列显示图标
Sep 19 Javascript
网易JS面试题与Javascript词法作用域说明
Nov 09 #Javascript
浅谈Javascript嵌套函数及闭包
Nov 09 #Javascript
JavaScript高级程序设计 扩展--关于动态原型
Nov 09 #Javascript
关于JavaScript定义类和对象的几种方式
Nov 09 #Javascript
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
Nov 09 #Javascript
一个javascript图片阅览组件
Nov 09 #Javascript
js中格式化日期时间型数据函数代码
Nov 08 #Javascript
You might like
收集的php编写大型网站问题集
2007/03/06 PHP
PHP整数取余返回负数的相关解决方法
2014/05/15 PHP
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
JavaScript获取页面中第一个锚定文本的方法
2015/04/03 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
javascript兼容性(实例讲解)
2017/08/15 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
pandas series序列转化为星期几的实例
2018/04/11 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
python装饰器练习题及答案
2019/11/01 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
教师实习期自我鉴定
2013/10/06 职场文书
失业者真诚求职信范文
2013/12/25 职场文书
运动会稿件300字
2014/02/14 职场文书
市场营销策划方案
2014/06/11 职场文书
上海世博会口号
2014/06/19 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
外科护士长工作总结
2015/08/12 职场文书
九年级英语教学反思
2016/02/15 职场文书