Aujourd'hui, lorsque je travaille sur un ancien projet, j'ai rencontré une exigence. J'ai crypté et décrypté les paramètres de l'URL en JavaScript, et j'ai trouvé ce code utile sur Internet:
La copie de code est la suivante:
<Script linguisse = "javascript">
<! - commencer
fonction crypt (str, pwd) {
if (str == "") return "";
str = Escape (str);
if (! pwd || pwd == "") {var pwd = "1234"; }
PWD = Escape (PWD);
if (pwd == null || pwd.length <= 0) {
alert ("Veuillez saisir un mot de passe avec lequel crypter le message.");
retourner null;
}
var prand = "";
pour (var i = 0; i <pwd.length; i ++) {
prand + = pwd.charcodeat (i) .toString ();
}
var spos = math.floor (prand.length / 5);
var mul = paSeInt (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 (mul <2) {
alert ("L'algorithme ne peut pas trouver de hachage approprié. Veuillez choisir un mot de passe différent. / NPOSSIBLE Les considérations sont de choisir un mot de passe plus complexe ou plus long.");
retourner null;
}
var sel = math.round (math.random () * 100000000)% 100000000;
prand + = sel;
while (prand.length> 10) {
Prand = (parseInt (prand.substring (0, 10)) + paSeInt (prand.substring (10, prand.length))). toString ();
}
Prand = (Mult * prand + incr)% modul;
var enc_chr = "";
var enc_str = "";
pour (var i = 0; i <str.length; i ++) {
ENC_CHR = PARSEIINT (str.charcodeat (i) ^ math.floor ((prand / modul) * 255));
if (enc_chr <16) {
ENC_STR + = "0" + ENC_CHR.TOSTRING (16);
}autre
ENC_STR + = ENC_CHR.TOSTRING (16);
Prand = (Mult * prand + incr)% modul;
}
sel = sel.tostring (16);
tandis que (sali.lengle <8) sel = "0" + sel;
ENC_STR + = SALT;
return enc_str;
}
Fonction Decrypt (str, pwd) {
if (str == "") return "";
if (! pwd || pwd == "") {var pwd = "1234"; }
PWD = Escape (PWD);
if (str == null || str.length <8) {
alerte ("Une valeur de sel n'a pas pu être extraite du message crypté car sa longueur est trop courte. Le message ne peut pas être décrypté.");
retour;
}
if (pwd == null || pwd.length <= 0) {
alert ("Veuillez saisir un mot de passe avec lequel décrypter le message.");
retour;
}
var prand = "";
pour (var i = 0; i <pwd.length; i ++) {
prand + = pwd.charcodeat (i) .toString ();
}
var spos = math.floor (prand.length / 5);
var mul = paSeInt (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 + = sel;
while (prand.length> 10) {
Prand = (parseInt (prand.substring (0, 10)) + paSeInt (prand.substring (10, prand.length))). toString ();
}
Prand = (Mult * prand + incr)% modul;
var enc_chr = "";
var enc_str = "";
pour (var i = 0; i <str.length; i + = 2) {
ENC_CHR = PARSEIINT (PARSEINT (Str.SubString (I, I + 2), 16) ^ Math.floor ((Prand / Modul) * 255));
ENC_STR + = String.FromCharcode (ENC_CHR);
Prand = (Mult * prand + incr)% modul;
}
Retour UNESCAPE (ENC_STR);
}
// fin ->
</cript>
À l'avenir, si vous rencontrez des problèmes de chiffrement et de décryptage, vous pouvez écrire le code ci-dessus directement dans un fichier JS, puis le faire. Il est facile d'économiser des problèmes. . . .