JS維吉尼亞密碼算法實現(xiàn)代碼
更新時間:2010年11月09日 10:14:00 作者:
我想用JS實現(xiàn)對文本的加密和解密,想用維吉尼亞密碼算法,誰有現(xiàn)成代碼啊
復制代碼 代碼如下:
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;
};
相關文章
不用AJAX和IFRAME,說說真正意義上的ASP+JS無刷新技術
注明:以下方法都經過實例和開發(fā)的長期驗證,其實這些技術早就有,今天只不過自己歸納一下2008-09-09詳解cesium實現(xiàn)大批量POI點位聚合渲染優(yōu)化方案
這篇文章主要為大家介紹了cesium實現(xiàn)大批量POI點位聚合渲染優(yōu)化方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05微信小程序實現(xiàn)動態(tài)改變view標簽寬度和高度的方法【附demo源碼下載】
這篇文章主要介紹了微信小程序實現(xiàn)動態(tài)改變view標簽寬度和高度的方法,涉及微信小程序事件響應及使用setData針對data數(shù)據動態(tài)操作相關實現(xiàn)技巧,需要的朋友可以參考下2017-12-12