作家
登录

JS维吉尼亚密码算法实现代码

作者: 来源:www.28hudong.com 2013-03-30 01:11:43 阅读 我要评论

复制代码 代码如下: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; };

  推荐阅读

  不用jQuery实现的动画效果代码

不过随着新版本的升级, 体积也慢慢变大了.24KB, Minified and Gzipped 155KB, Uncompressed Code压缩并gzip输出24K, 也不小了.如果页面上一个简单的效果,一个简单的动画就没必要载入这么大的库.看下面这个图片渐变>>>详细阅读


本文标题:JS维吉尼亚密码算法实现代码

地址:http://www.17bianji.com/kaifa2/JS/25439.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)