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 相关文章推荐
Input 特殊事件onpopertychange和oninput
Jun 17 Javascript
javascript实现延时显示提示框特效代码
Apr 27 Javascript
jQuery监听文件上传实现进度条效果的方法
Oct 16 Javascript
JS创建Tag标签的方法详解
Jun 09 Javascript
微信小程序传值以及获取值方法的详解
Apr 29 Javascript
微信小程序位置授权处理方法
Jun 13 Javascript
angularjs1.X 重构controller 的方法小结
Aug 15 Javascript
js通过循环多张图片实现动画效果
Dec 19 Javascript
详解vue-router的Import异步加载模块问题的解决方案
May 13 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
Jul 30 Javascript
如何构建 vue-ssr 项目的方法步骤
Aug 04 Javascript
CocosCreator入门教程之网络通信
Apr 16 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
中国收音机工业发展史
2021/03/02 无线电
php通用防注入程序 推荐
2011/02/26 PHP
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
javascript编程起步(第五课)
2007/01/10 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
JS判断移动端访问设备并加载对应CSS样式
2014/06/13 Javascript
javascript实现依次输入input自动定焦
2014/12/23 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
微信小程序 教程之事件
2016/10/18 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
python中的闭包用法实例详解
2015/05/05 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
python模拟实现斗地主发牌
2020/01/07 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
英国森林假期:Forest Holidays
2021/01/01 全球购物
初中三年学生的学习自我评价
2013/11/13 职场文书
英语教师岗位职责
2014/03/16 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
收入证明怎么写
2015/06/12 职场文书
python语言中pandas字符串分割str.split()函数
2022/08/05 Python
基于Python实现nc批量转tif格式
2022/08/14 Python