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 阻止javascript事件冒泡,获取控件ID值
Jun 27 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
Jan 13 Javascript
JS编程小常识很有用
Nov 26 Javascript
JavaScript省市联动实现代码
Feb 15 Javascript
jquery ajaxSubmit 异步提交的简单实现
Feb 28 Javascript
Js获取当前日期时间及格式化代码
Sep 17 Javascript
javascript基于原型链的继承及call和apply函数用法分析
Dec 15 Javascript
vue实现简单表格组件实例详解
Apr 16 Javascript
微信小程序 sha1 实现密码加密实例详解
Jul 06 Javascript
AngularJs每天学习之总体介绍
Aug 07 Javascript
vue组件之间数据传递的方法实例分析
Feb 12 Javascript
Vue 无限滚动加载指令实现方法
May 28 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
一次编写,随处运行
2006/10/09 PHP
详解WordPress开发中的get_post与get_posts函数使用
2016/01/04 PHP
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
jquery清空表单数据示例分享
2014/02/13 Javascript
js常用数组操作方法简明总结
2014/06/20 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
2014/09/01 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
jQuery中fadeOut()方法用法实例
2014/12/24 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
js密码强度校验
2015/11/10 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
2018/03/09 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
python使用marshal模块序列化实例
2014/09/25 Python
python根据日期返回星期几的方法
2015/07/06 Python
Python实现生成随机数据插入mysql数据库的方法
2017/12/25 Python
Python+matplotlib实现华丽的文本框演示代码
2018/01/22 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
python encrypt 实现AES加密的实例详解
2020/02/20 Python
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
临床医学专业个人的自我评价
2013/09/27 职场文书
安全大检查实施方案
2014/02/22 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
民间借贷协议书范本
2014/10/01 职场文书
督导岗位职责范本
2015/04/10 职场文书
青年志愿者活动感想
2015/08/07 职场文书
离婚协议书格式范本
2016/03/18 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers