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 相关文章推荐
打开超链需要“确认”对话框的方法
Mar 08 Javascript
jquery api参考 visualjquery 中国线路 速度快
Nov 30 Javascript
关于this和self的使用说明
Aug 01 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
Nov 19 Javascript
Jquery获取复选框被选中值的简单方法
Jul 04 Javascript
浅析javascript 定时器
Dec 23 Javascript
javascript动态创建表格及添加数据实例详解
May 13 Javascript
Bootstrap每天必学之前端开发框架
Nov 19 Javascript
老生常谈javascript的类型转换
Oct 12 Javascript
Vue2实时监听表单变化的示例讲解
Aug 30 Javascript
JS实现的全选、全不选及反选功能【案例】
Feb 19 Javascript
Vue的属性、方法、生命周期实例代码详解
Sep 17 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 fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
Destoon模板制作简明教程
2014/06/20 PHP
PHP5.6读写excel表格文件操作示例
2019/02/26 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
PHP实现文件上传与下载
2020/08/28 PHP
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
vue兄弟组件传递数据的实例
2018/09/06 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
Element Badge标记的使用方法
2020/07/27 Javascript
js实现网页随机验证码
2020/10/19 Javascript
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python Web服务器Tornado使用小结
2014/05/06 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
实习协议书范本
2014/04/22 职场文书
宣传活动总结范文
2014/07/01 职场文书
教师节倡议书
2014/08/30 职场文书
亮剑观后感300字
2015/06/05 职场文书
学生会副主席竞选稿
2015/11/19 职场文书