Сегодня, работая над старым проектом, я столкнулся с требованием. Я зашифровал и расшифровал параметры в URL в JavaScript и нашел этот полезный код из Интернета:
Кода -копия выглядит следующим образом:
<Script language = "javascript">
<!- Начни
Функция Encrypt (str, pwd) {
if (str == "") return "";
str = Escape (str);
if (! pwd || pwd == "") {var pwd = "1234"; }
pwd = Escape (PWD);
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 ingr = math.ceil (pwd.length / 2);
var modul = math.pow (2, 31) - 1;
if (mult <2) {
ALERT («Алгоритм не может найти подходящий хэш. Пожалуйста, выберите другой пароль. /Непоссируемые соображения должны выбрать более сложный или более длинный пароль.»);
вернуть ноль;
}
var salt = math.round (math.random () * 10000000000) % 10000000000;
Prand += соль;
while (prand.length> 10) {
prand = (parseint (prand.substring (0, 10)) + parseint (prand.substring (10, prand.length))). tostring ();
}
prand = (mult * prand + ingr) % 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 + ingr) % modul;
}
соль = соль.toString (16);
while (salt.length <8) salt = "0" + соль;
Enc_str += Salt;
вернуть Enc_str;
}
Функция расшифрована (str, pwd) {
if (str == "") return "";
if (! pwd || pwd == "") {var pwd = "1234"; }
pwd = Escape (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 ingr = 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 + ingr) % 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 + ingr) % modul;
}
вернуть Unessape (enc_str);
}
// end ->
</script>
В будущем, если вы столкнетесь с проблемами шифрования и дешифрования, вы можете написать вышеуказанный код непосредственно в файл JS, а затем сделать это. Это легко сэкономить. Полем Полем Полем