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 相关文章推荐
js创建数据共享接口——简化框架之间相互传值
Oct 23 Javascript
基于JQuery实现的类似购物商城的购物车
Dec 06 Javascript
javascript学习笔记(七) js函数介绍
Jun 19 Javascript
Javascript的时间戳和php的时间戳转换注意事项
Apr 12 Javascript
jquery 操作iframe的几种方法总结
Dec 13 Javascript
jQuery产品间断向下滚动效果核心代码
May 08 Javascript
bootstrap基础知识学习笔记
Nov 02 Javascript
前端面试知识点锦集(JavaScript篇)
Dec 28 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
May 17 Javascript
使用rollup打包JS的方法步骤
Dec 05 Javascript
Element UI框架中巧用树选择器的实现
Dec 12 Javascript
windows实现npm和cnpm安装步骤
Oct 24 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处理整数函数的详解
2013/06/09 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
javascript实现根据身份证号读取相关信息
2014/12/17 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
Python导入模块时遇到的错误分析
2017/08/30 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
python3.5绘制随机漫步图
2018/08/27 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
python中matplotlib实现随鼠标滑动自动标注代码
2020/04/23 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
行政副总岗位职责
2014/02/23 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
文秘自荐信
2014/06/28 职场文书
水电维修专业推荐信
2014/09/06 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
春节随笔
2015/08/15 职场文书