Hoy, cuando trabajaba en un proyecto antiguo, encontré un requisito. En cifrado y descifré los parámetros en la URL en JavaScript, y encontré este código útil de Internet:
La copia del código es la siguiente:
<Script language = "javaScript">
<!- Comienza
función encrypt (str, pwd) {
if (str == "") return "";
str = escape (str);
if (! pwd || pwd == "") {var pwd = "1234"; }
pwd = escape (pwd);
if (pwd == null || pwd.length <= 0) {
alerta ("Ingrese una contraseña con la que encriptar el mensaje");
regresar nulo;
}
var prand = "";
para (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) {
alerta ("El algoritmo no puede encontrar un hash adecuado. Elija una contraseña diferente. /Las consideraciones nposibles son elegir una contraseña más compleja o más larga");
regresar 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 + inc) % módulo;
var enc_chr = "";
var enc_str = "";
para (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);
}demás
enc_str += enc_chr.ToString (16);
prand = (mult * prand + inc) % módulo;
}
sal = sal.tostring (16);
while (sal.length <8) sal = "0" + sal;
enc_str += sal;
return enc_str;
}
función Decrypt (str, pwd) {
if (str == "") return "";
if (! pwd || pwd == "") {var pwd = "1234"; }
pwd = escape (pwd);
if (str == null || str.length <8) {
alerta ("No se pudo extraer un valor de sal del mensaje cifrado porque su longitud es demasiado corta. El mensaje no se puede descifrar");
devolver;
}
if (pwd == null || pwd.length <= 0) {
alerta ("Ingrese una contraseña para descifrar el mensaje");
devolver;
}
var prand = "";
para (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 + inc) % módulo;
var enc_chr = "";
var enc_str = "";
para (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 + inc) % módulo;
}
return unescape (enc_str);
}
// fin ->
</script>
En el futuro, si encuentra problemas de cifrado y descifrado, puede escribir el código anterior directamente en un archivo JS y luego hacerlo. Es fácil ahorrar problemas. . . .