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 Array数组对象的扩展函数代码
May 22 Javascript
封装的原生javascript弹出层代码
Sep 24 Javascript
js原型链原理看图说明
Jul 07 Javascript
实现无刷新联动例子汇总
May 20 Javascript
JS拖拽插件实现步骤
Aug 03 Javascript
javascript伸缩菜单栏实现代码分享
Nov 12 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
Jun 08 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
Nov 30 Javascript
javascript的this关键字详解
May 20 Javascript
javascript头像上传代码实例
Sep 28 Javascript
javascript实现点击星星小游戏
Dec 24 Javascript
从表单校验看JavaScript策略模式的使用详解
Oct 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-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
2011/08/15 PHP
PHP数组实例总结与说明
2011/08/23 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
php实现用已经过去多长时间的方式显示时间
2015/06/05 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
ionic+html5+API实现双击返回键退出应用
2019/09/17 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
python实现微信远程控制电脑
2018/02/22 Python
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
vue.js实现输入框输入值内容实时响应变化示例
2018/07/07 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
python的pip安装以及使用教程
2018/09/18 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
Python如何读取、写入CSV数据
2020/07/28 Python
互动出版网:专业书籍
2017/03/21 全球购物
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
一份Java笔试题
2012/02/21 面试题
销售辞职报告范文
2014/01/12 职场文书
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL