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.jstree 增加节点的双击事件代码
Jul 27 Javascript
document.getElementById介绍
Sep 13 Javascript
js获取select默认选中的Option并不是当前选中值
May 07 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
Jun 09 Javascript
JS中Location使用详解
May 12 Javascript
JavaScript实现标题栏文字轮播效果代码
Oct 24 Javascript
深入理解js promise chain
May 05 Javascript
javascript实现简单的on事件绑定
Aug 23 Javascript
ES6新特性一: let和const命令详解
Apr 20 Javascript
解决Vue不能检测数组或对象变动的问题
Feb 24 Javascript
jquery分页插件pagination使用教程
Oct 23 jQuery
JavaScript栈和队列相关操作与实现方法详解
Dec 07 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函数
2006/12/06 PHP
php中利用post传递字符串重定向的实现代码
2011/04/21 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
基于JQuery制作的产品广告效果
2010/12/08 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
JavaScript数据结构与算法之链表
2016/01/29 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
详解基于node的前端项目编译时内存溢出问题
2017/08/01 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
Python Django Cookie 简单用法解析
2019/08/13 Python
jupyter notebook实现显示行号
2020/04/13 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
Python 爬虫的原理
2020/07/30 Python
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
linux面试相关问题
2012/08/11 面试题
护士演讲稿范文
2014/01/05 职场文书
宿舍卫生检讨书
2014/01/16 职场文书
运动会演讲稿50字
2014/08/25 职场文书
倡议书的写法
2014/08/30 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
MongoDB 常用的crud操作语句
2021/06/20 MongoDB
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS