Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите сделать задание, пожалуйста. (https://javascript.ru/forum/misc/37839-pomogite-sdelat-zadanie-pozhalujjsta.html)

mortivor 10.05.2013 13:12

Помогите сделать задание, пожалуйста.
 
function decrypt(s)
{
var r = "";
var key = arguments.callee.toString();
var l = key.length;
s = unescape(s);
for(i=0;i<s.length;i++)
r+=String.fromCharCode(s.charCodeAt(i) ^ key.charCodeAt(i % l));
return r;
}
eval(decrypt('IZ7%0C%01%1BO%05E%1DE%0A%01Y%3A%15%5 E%12znxJ%7D%7E%7F%11%1A9P%18%13%5C%11%13%18%09%22y %24%0D%03%06%13%00AM-O%06R%1C%09%5BI%1B%0A%15%19%2C%0D%08O%0AS%5BDK%23g '));

закоментите пожалуйста все строчки, сам в скриптах ни бум бум. в принципе понимаю только половину. пугает var key = arguments.callee.toString(); и r+=String.fromCharCode(s.charCodeAt(i) ^ key.charCodeAt(i % l));

dmitriymar 10.05.2013 13:26

по любому из операторов, последовательности операторов можно загуглить . и прокоментить самостоятельно в течении получаса

mortivor 10.05.2013 13:40

ну я загуглил оператор arguments.callee.toString, ни одного толкового объяснения с примерчиками не нашел, up

dmitriymar 10.05.2013 13:48

Цитата:

Сообщение от mortivor
ну я загуглил оператор arguments.callee.toString, ни одного толкового объяснения с примерчиками не нашел, up

а ничего что он из 3х частей состоит? и вполне логично начинать гуглить с первой части?

http://www.google.com.ar/search?sour...w=1920&bih=911

mortivor 10.05.2013 13:53

я конечно могу за ночь выучить java script(обещаю сделать это). не мог бы ты вычислить конечное r?

Gvozd 10.05.2013 14:00

Цитата:

Сообщение от mortivor
я конечно могу за ночь выучить java script(обещаю сделать это)

Приступайте.
Задача ваша, решение ее нужно вам, значит и решать ее нужно вам.
Если хотите чтобы другие за вас решили эту задачу, сначала следует объяснить почему это нужно другим людям
Цитата:

Сообщение от mortivor
не мог бы ты вычислить конечное r?

Для этого достаточно выполнить скрипт

mortivor 10.05.2013 14:04

кхм, спасибо конечно за наставление на путь истинный... я бы сюда не писал, знай я каким образом выполнить скрипт и вывести результат. пытался через стандартный сервер скриптов винды прогнать его, вписав в исходник вывод r до ретёрна. (если вам не трудно "прогоните" скрипт и напишите результат пожалуйста)

Aetae 10.05.2013 14:20

function decrypt(s)
{
var r = "";
var key = arguments.callee.toString();
var l = key.length;
s = unescape(s);
for(i=0;i<s.length;i++)
r+=String.fromCharCode(s.charCodeAt(i) ^ key.charCodeAt(i % l));
return r;
}
alert(decrypt('IZ7%0C%01%1BO%05E%1DE%0A%01Y%3A%15%5 E%12znxJ%7D%7E%7F%11%1A9P%18%13%5C%11%13%18%09%22y %24%0D%03%06%13%00AM-O%06R%1C%09%5BI%1B%0A%15%19%2C%0D%08O%0AS%5BDK%23g '));

mortivor 10.05.2013 14:48

Спасибо, зашел на этом сайте в http://learn.javascript.ru/play и там попробовал выводить r после каждого шага цикла, получил "//Your key is JavaSd@w^_g{Kpj3a11:2(Y{bt3k$4
r&3nn.$~dajni#f6>j?L4" откуда квакозябры могли взяться?

Aetae 10.05.2013 21:56

Из arguments.callee.toString().
arguments.callee - это ссылка на саму функцию, т.е. в данном случае arguments.callee === decrypt. toString - приведение к строке. Т.е. key = 'function decrypt(s)
{
var r = "";
var key = arguments.callee.toString();
var l = key.length;
s = unescape(s);
for(i=0;i<s.length;i++)
r+=String.fromCharCode(s.charCodeAt(i) ^ key.charCodeAt(i % l));
return r;
}'


Это очень ненадёжный ключ, зависящий от кучи факторов, как то браузер, кодировка, переносы строки итд.


Часовой пояс GMT +3, время: 13:11.