今日、古いプロジェクトに取り組んでいるとき、私は要件に遭遇しました。 JavaScriptのURLのパラメーターを暗号化して解読し、インターネットからこの便利なコードを見つけました。
コードコピーは次のとおりです。
<スクリプト言語= "javascript">
<! - begin
関数暗号化(str、pwd){
if(str == "")return "";
str = escase(str);
if(!pwd || pwd == ""){var pwd = "1234"; }
pwd = escase(pwd);
if(pwd == null || pwd.length <= 0){
Alert(「メッセージを暗号化するためのパスワードを入力してください。」);
nullを返します。
}
var prand = "";
for(var i = 0; i <pwd.length; i ++){
prand += pwd.charcodeat(i).toString();
}
var spos = math.floor(prand.length / 5);
var mult = parseint(prand.charat(spos) + prand.charat(spos*2) + prand.charat(spos*3) + prand.charat(spos*4) + prand.charat(spos*5));
var incr = math.ceil(pwd.length / 2);
var modul = math.pow(2、31)-1;
if(mult <2){
alert( "アルゴリズムは適切なハッシュを見つけることができません。別のパスワードを選択してください。
nullを返します。
}
var salt = math.round(math.random() * 100000000)%100000000;
prand +=塩;
while(prand.length> 10){
prand =(parseint(prand.substring(0、10)) + parseint(prand.substring(10、prand.length)))。toString();
}
prand =(mult * prand + incr)%modul;
var enc_chr = "";
var enc_str = "";
for(var i = 0; i <str.length; i ++){
enc_chr = parseint(str.charcodeat(i) ^ math.floor((prand/modul) * 255));
if(enc_chr <16){
enc_str + = "0" + enc_chr.toString(16);
}それ以外
enc_str += enc_chr.tostring(16);
prand =(mult * prand + incr)%modul;
}
SALT = SALT.TOSTRING(16);
while(salt.length <8)salt = "0" + salt;
ENC_STR += SALT;
enc_strを返します。
}
function decrypt(str、pwd){
if(str == "")return "";
if(!pwd || pwd == ""){var pwd = "1234"; }
pwd = escase(pwd);
if(str == null || str.length <8){
アラート(「長さが短すぎるため、暗号化されたメッセージから塩値を抽出できませんでした。メッセージを解読できません。」);
戻る;
}
if(pwd == null || pwd.length <= 0){
Alert(「メッセージを復号化するためのパスワードを入力してください。」);
戻る;
}
var prand = "";
for(var i = 0; i <pwd.length; i ++){
prand += pwd.charcodeat(i).toString();
}
var spos = math.floor(prand.length / 5);
var mult = parseint(prand.charat(spos) + prand.charat(spos*2) + prand.charat(spos*3) + prand.charat(spos*4) + prand.charat(spos*5));
var incr = math.round(pwd.length / 2);
var modul = math.pow(2、31)-1;
var salt = parseint(str.substring(str.length -8、str.length)、16);
str = str.substring(0、str.length -8);
prand +=塩;
while(prand.length> 10){
prand =(parseint(prand.substring(0、10)) + parseint(prand.substring(10、prand.length)))。toString();
}
prand =(mult * prand + incr)%modul;
var enc_chr = "";
var enc_str = "";
for(var i = 0; i <str.length; i+= 2){
enc_chr = parseint(parseint(str.substring(i、i+2)、16) ^ math.floor((prand/modul) * 255));
enc_str += string.fromCharcode(enc_chr);
prand =(mult * prand + incr)%modul;
}
unescape(enc_str)を返します。
}
//終了 - >
</script>
将来的には、暗号化と復号化の問題が発生した場合、上記のコードをJSファイルに直接書き込み、それを行うことができます。トラブルを救うのは簡単です。 。 。 。