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 相关文章推荐
基于jquery完美拖拽,可返回拖动轨迹
Mar 29 Javascript
jQuery使用技巧简单汇总
Apr 18 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
Nov 06 Javascript
jquery对象和javascript对象即DOM对象相互转换
Aug 07 Javascript
一个css与js结合的下拉菜单支持主流浏览器
Oct 08 Javascript
jquery获取select选中值的方法分析
Dec 22 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
Jan 27 Javascript
使用JQuery实现智能表单验证功能
Mar 08 Javascript
JQuery的attr 与 val区别
Jun 12 Javascript
JavaScript获取ul中li个数的方法
Feb 13 Javascript
Angularjs按需查询实例代码
Oct 30 Javascript
jquery实现左右轮播切换效果
Jan 01 jQuery
网易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
第十五节--Zend引擎的发展
2006/11/16 PHP
php 连接mysql连接被重置的解决方法
2011/02/15 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
JS的数组的扩展实例代码
2008/07/09 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
JavaScript限定图片显示大小的方法
2015/03/11 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
JSONP 的原理、理解 与 实例分析
2020/05/16 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
详解Django之auth模块(用户认证)
2018/04/17 Python
python中for用来遍历range函数的方法
2018/06/08 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
python让函数不返回结果的方法
2020/06/22 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
2021/02/20 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
什么是URL
2015/12/13 面试题
建筑施工实习自我鉴定
2013/09/19 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
村委会贫困证明范文
2014/09/21 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
交通事故被告代理词
2015/05/23 职场文书
初中语文教学研修日志
2015/11/13 职场文书
anaconda python3.8安装后降级
2021/06/11 Python