Hoje, ao trabalhar em um projeto antigo, encontrei um requisito. Criptografei e descriptografei os parâmetros no URL em JavaScript e encontrei esse código útil da Internet:
A cópia do código é a seguinte:
<Script Language = "JavaScript">
<!- Comece
função Encrypt (str, pwd) {
if (str == "") retornar "";
str = escape (str);
if (! pwd || pwd == "") {var pwd = "1234"; }
PWD = Escape (PWD);
if (pwd == null || pwd.length <= 0) {
alerta ("Por favor, insira uma senha com a qual criptografar a mensagem.");
retornar nulo;
}
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 ("O algoritmo não pode encontrar um hash adequado. Escolha uma senha diferente. /Considerações npossíveis devem escolher uma senha mais complexa ou mais longa.");
retornar nulo;
}
var sal = math.round (math.random () * 100000000) % 100000000;
Prand += sal;
while (Prand.Length> 10) {
Prand = (ParseInt (Prand.Substring (0, 10)) + Parseint (Prand.Substring (10, Prand.Length))). ToString ();
}
Prand = (Mult * Prand + Incr) % módulo;
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);
}outro
Enc_str += Enc_chr.toString (16);
Prand = (Mult * Prand + Incr) % módulo;
}
sal = sal.ToString (16);
enquanto (Salt.Length <8) sal = "0" + sal;
Enc_str += sal;
return Enc_str;
}
função descriptografar (str, pwd) {
if (str == "") retornar "";
if (! pwd || pwd == "") {var pwd = "1234"; }
PWD = Escape (PWD);
if (str == null || str.length <8) {
alerta ("Um valor de sal não pôde ser extraído da mensagem criptografada porque é muito curto. A mensagem não pode ser descriptografada.");
retornar;
}
if (pwd == null || pwd.length <= 0) {
alerta ("Por favor, insira uma senha com a qual descriptografar a mensagem.");
retornar;
}
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 sal = parseint (str.substring (str.length - 8, str.length), 16);
str = str.substring (0, str.length - 8);
Prand += sal;
while (Prand.Length> 10) {
Prand = (ParseInt (Prand.Substring (0, 10)) + Parseint (Prand.Substring (10, Prand.Length))). ToString ();
}
Prand = (Mult * Prand + Incr) % módulo;
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) % módulo;
}
return unescape (Enc_str);
}
// final ->
</script>
No futuro, se você encontrar problemas de criptografia e descriptografia, poderá escrever o código acima diretamente em um arquivo JS e depois fazê -lo. É fácil economizar problemas. . . .