JS維吉尼亞密碼算法實(shí)現(xiàn)代碼
var Vigenere = {
_strCpr: 'abcdefghijklmnopqrstuvwxyz_12345 67890.ABCDEFGHIJKLMNOPQRSTUVWXYZ',//可以將此字符串的順序打亂點(diǎn),或者添加更多字符
_strKey: function(strK,str){//生成密鑰字符串,strK為密鑰,str為明文或者密文
var lenStrK = strK.length;
var lenStr = str.length;
if(lenStrK != lenStr){//如果密鑰長(zhǎng)度與str不同,則需要生成密鑰字符串
if(lenStrK < lenStr){//如果密鑰長(zhǎng)度比str短,則以不斷重復(fù)密鑰的方式生成密鑰字符串
while(lenStrK < lenStr){
strK = strK + strK;
lenStrK = 2 * lenStrK;
}
}//此時(shí),密鑰字符串的長(zhǎng)度大于或等于str長(zhǎng)度
strK = strK.substring(0,lenStr);//將密鑰字符串截取為與str等長(zhǎng)的字符串
}
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 '本算法暫時(shí)不能對(duì)字符:' + P.charAt(loop) + '進(jìn)行加密';
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;
};
- js版本A*尋路算法
- js+ajax實(shí)現(xiàn)的A*游戲路徑算法整理
- 常用JS加密編碼算法代碼
- js三種排序算法分享
- js算法中的排序、數(shù)組去重詳細(xì)概述
- javascript圖片相似度算法實(shí)現(xiàn) js實(shí)現(xiàn)直方圖和向量算法
- js交換排序 冒泡排序算法(Javascript版)
- Python求解平方根的方法
- php找出指定范圍內(nèi)回文數(shù)且平方根也是回文數(shù)的方法
- Python中利用sqrt()方法進(jìn)行平方根計(jì)算的教程
- JavaScript實(shí)現(xiàn)算術(shù)平方根算法-代碼超簡(jiǎn)單
相關(guān)文章
JS 根據(jù)子網(wǎng)掩碼,網(wǎng)關(guān)計(jì)算出所有IP地址范圍示例
這篇文章主要介紹了JS 根據(jù)子網(wǎng)掩碼,網(wǎng)關(guān)計(jì)算出所有IP地址范圍,涉及IP地址、子網(wǎng)的正則驗(yàn)證,子網(wǎng)掩碼計(jì)算等相關(guān)操作技巧,需要的朋友可以參考下2016-09-09不用AJAX和IFRAME,說(shuō)說(shuō)真正意義上的ASP+JS無(wú)刷新技術(shù)
注明:以下方法都經(jīng)過(guò)實(shí)例和開(kāi)發(fā)的長(zhǎng)期驗(yàn)證,其實(shí)這些技術(shù)早就有,今天只不過(guò)自己歸納一下2008-09-09詳解cesium實(shí)現(xiàn)大批量POI點(diǎn)位聚合渲染優(yōu)化方案
這篇文章主要為大家介紹了cesium實(shí)現(xiàn)大批量POI點(diǎn)位聚合渲染優(yōu)化方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-0520行代碼實(shí)現(xiàn)的一個(gè)CSS覆蓋率測(cè)試腳本
這里我們只求CSS規(guī)則的覆蓋率,所以訪問(wèn) querySelectorAll().length 即可。通過(guò)排序就可看出各個(gè)CSS使用情況2013-07-07js時(shí)間轉(zhuǎn)換毫秒的實(shí)例代碼
在本篇文章里小編給大家整理的是關(guān)于js時(shí)間轉(zhuǎn)換毫秒的實(shí)例代碼以及相關(guān)知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。2019-08-08javascript實(shí)現(xiàn)類(lèi)似百度分享功能的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)類(lèi)似百度分享功能的方法,以實(shí)例形式較為完整的分析了基于javascript實(shí)現(xiàn)百度分享功能所涉及的樣式與分享功能實(shí)現(xiàn)方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07超強(qiáng)的IE背景圖片閃爍(抖動(dòng))的解決辦法
超強(qiáng)的IE背景圖片閃爍(抖動(dòng))的解決辦法...2007-09-09微信小程序?qū)崿F(xiàn)動(dòng)態(tài)改變view標(biāo)簽寬度和高度的方法【附demo源碼下載】
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)動(dòng)態(tài)改變view標(biāo)簽寬度和高度的方法,涉及微信小程序事件響應(yīng)及使用setData針對(duì)data數(shù)據(jù)動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12