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实现unicode和字符的互相转换
Jul 18 Javascript
js中的值类型和引用类型小结 文字说明与实例
Dec 12 Javascript
向当前style sheet中插入一个新的style实现方法
Apr 01 Javascript
下拉菜单点击实现连接跳转功能的js代码
May 19 Javascript
js和css写一个可以自动隐藏的悬浮框
Mar 05 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
Mar 05 Javascript
js如何改变文章的字体大小
Jan 08 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
May 17 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
Sep 25 Javascript
总结javascript三元运算符知识点
Sep 28 Javascript
微信小程序bindtap事件与冒泡阻止详解
Aug 08 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
Mar 03 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 删除无限级目录与文件代码共享
2008/11/22 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
php实现的短网址算法分享
2014/06/20 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
JavaScript 闭包深入理解(closure)
2009/05/27 Javascript
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
url传递的参数值中包含&amp;时,url自动截断问题的解决方法
2016/08/02 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
浅谈vue的第一个commit分析
2020/06/08 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
python实现微信小程序自动回复
2018/09/10 Python
python-opencv颜色提取分割方法
2018/12/08 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
Python timeit模块的使用实践
2020/01/13 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
幼儿园老师寄语
2014/04/03 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
二人合伙经营协议书
2014/09/13 职场文书
2014年招商工作总结
2014/11/22 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android