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 form 验证函数 弹出对话框形式
Jun 23 Javascript
JavaScript 学习笔记一些小技巧
Mar 28 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
May 15 Javascript
js获取select选中的option的text示例代码
Dec 19 Javascript
JS动态修改图片的URL(src)的方法
Apr 01 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
Jun 20 Javascript
微信小程序-拍照或选择图片并上传文件
Jan 06 Javascript
详解Vue.use自定义自己的全局组件
Jun 14 Javascript
原生JS实现自定义滚动条效果
Oct 27 Javascript
Angular2实现组件交互的方法分析
Dec 19 Javascript
vue小白入门教程
Apr 02 Javascript
解决vue-loader加载不上的问题
Oct 21 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
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
js操作DOM--添加、删除节点的简单实例
2016/07/08 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
使用vue-cli webpack 快速搭建项目的代码
2018/11/21 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
微信小程序点击view动态添加样式过程解析
2020/01/21 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
windows下python安装pip图文教程
2018/05/25 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
打架检讨书100字
2014/01/08 职场文书
安全检查验收制度
2014/01/12 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
Python多个MP4合成视频的实现方法
2021/07/16 Python
openstack云计算keystone组件工作介绍
2022/04/20 Servers
SQL SERVER中的流程控制语句
2022/05/25 SQL Server