Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: ascii encrypter (реализация на перл)  (Прочитано 8218 раз)
0 Пользователей и 1 Гость смотрят эту тему.
vika
Постоялец

ru
Offline Offline
Пол: Женский

« : 09-11-2012 01:32 » 

Собственно, прошу помочь и ткнуть носом, где косяк. Довольно интересное решение нашла, вот пробую перевести на перл, вроде ничего сложного нету, массивы, а че то голова не фурычит.
Код: (Perl)
sub unEncrypt(theText) {
output = new String;
Temp = new Array();
Temp2 = new Array();
TextSize = theText.length;
for (i = 0; i < TextSize; i++) {
Temp[i] = theText.charCodeAt(i);
Temp2[i] = theText.charCodeAt(i + 1);
}
for (i = 0; i < TextSize; i = i+2) {
output += String.fromCharCode(Temp[i] - Temp2[i]);
}
return output;
}

Код: (Perl)
function unEncrypt(theText) {
$output;
@Temp;
@Temp2;
$TextSize = length( theText);
for ($i = 0; $i < $TextSize; $i++) {
$Temp[i] = theText.charCodeAt(i);
$Temp2[i] = theText.charCodeAt(i + 1);
}
for ($i = 0; $i < TextSize; $i = $i+2) {
$output += String.fromCharCode($Temp[i] - $Temp2[i]);
}
return $output;
}
« Последнее редактирование: 12-11-2012 16:22 от McZim » Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #1 : 09-11-2012 04:59 » 

charCodeAt, charCodeAt, "+="   кто будет к перлу приводить?

Что в этом решении интересного - не понятно. Также не понятно - зачем тут, вообще, два цикла и временные массивы?
Записан

Удачного всем кодинга! -=x[PooH]x=-
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 09-11-2012 07:13 » 

vika, чтобы портировать программу с одного языка на другой, надо не заменять функции и операторы, а разобрать алгоритм. Опиши его на бумаге словами, попробуй выполнить прогон в уме, проверь результат. Только после этого у тебя получится написать что-то работоспособное.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.

Хз, я не очень просто не очень во всё это верю, во всякие там сатурны и прочую поебень.
vika
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #3 : 09-11-2012 22:15 » 

Смысл то более менее понятен. Не понятно только вот, что

а) в яваскрипте функция string.charCodeAt(index) возврашает юникодное представление строки, где index - длина строки, в перле вроде функция ord что то подобное делает, только не

совсем. Есть ли аналоги этой функции на перле, идентично яваскриптовой

б) fromCharCode из яваскрипта наоборот, в зависимости от уникод числа вернет строку. аналога в перле путного что то не найду. Подскажите, пожалуйста, решение
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 10-11-2012 08:11 » 

a) Длина строки? Ну-ну.
б) Судя по твоим вопросам, за год в изучении программирования ты нисколько не прогрессировала. Документацию то читала? Описание конструкций языка, внутреннее представление строки, встроенные функции работы со строками.

Вика, не пойму, чего ты прицепилась к Perl и Javascript? Это не самые подходящие кандидаты для изучения программирования. Да и задачу выбрала специфическую — не для начинающего.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.

Хз, я не очень просто не очень во всё это верю, во всякие там сатурны и прочую поебень.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 10-11-2012 08:35 » 

RXL, все правильно
>Опиши его на бумаге словами...

Не имеет значения какой язык взят в качестве рабочего.
Первое и самое основное...
Читай вслух свою(чужую) программу.

Впрочем Vika уже ответила на один вопрос для себя (о многобайтовых кодировках). Вот только продолжения она не видит.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
vika
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #6 : 14-11-2012 15:48 » 

А ларчик то открывается просто Класс!

Код: (Perl)
$txt =  ' ' ;

$TextSize = length ($txt);

for ($i = 0; $i < $TextSize; $i = $i+2) {

$Temp[i] = ord (substr($txt, $i));

$Temp2[i] = ord (substr($txt, $i + 1));

$output .= chr($Temp[i]-$Temp2[i]);

Всем спасибо за внимание. Жаль, что пакер Дэна Эдвордса не так прост
« Последнее редактирование: 14-11-2012 16:58 от McZim » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 14-11-2012 18:02 » 

vika, ты считаешь, что задача решена? Не поняв алгоритма? Не говоря уже про страшный код...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.

Хз, я не очень просто не очень во всё это верю, во всякие там сатурны и прочую поебень.
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #8 : 15-11-2012 07:44 » 

vika, а зачем тебе $Temp и $Temp2 ? Ага

Почему, например, не так?
Код: (Perl)
$txt =  ' ' ;
for ($i = 0; $i < length ($txt); $i = $i+2) { $output .= chr(ord (substr($txt, $i))-ord (substr($txt, $i + 1))); }
« Последнее редактирование: 15-11-2012 07:48 от PooH » Записан

Удачного всем кодинга! -=x[PooH]x=-
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 15-11-2012 09:25 » 

>а зачем тебе $Temp и $Temp2

я бы переспросил зачем массив Temp'ов


Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
vika
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #10 : 16-11-2012 19:17 » 

vika, ты считаешь, что задача решена? Не поняв алгоритма? Не говоря уже про страшный код...
Ну почему же не поняв алгоритм, все понятно более менее. Пробегаем строку циклом, каждый символ сначала переводя в ascii код функцией ord, затем, с помощью функции chr переводим ascii код в символ. А по поводу корявости кода, ну в стране у нас тоже бардак творится, воры кругом, причем, начиная с верха и заканчивая всякими "срочными обновлениями броузеров", но живем ведь. Так и тут, работает, свою задачу выполняет и ладно.

Добавлено через 1 минуту и 21 секунду:
vika, а зачем тебе $Temp и $Temp2 ? Ага

Почему, например, не так?
Код: (Perl)
$txt =  ' ' ;
for ($i = 0; $i < length ($txt); $i = $i+2) { $output .= chr(ord (substr($txt, $i))-ord (substr($txt, $i + 1))); }
А это промежуточные переменные, чтобы не усложнять, ну и , хотелось посмотреть, что они вернут

Добавлено через 44 секунды:
>а зачем тебе $Temp и $Temp2
я бы переспросил зачем массив Temp'ов
По аналогии с яваскриптом делала, проверяла построчно там и тут
« Последнее редактирование: 16-11-2012 19:19 от vika » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 16-11-2012 21:12 » 

vika, ты считаешь, что задача решена? Не поняв алгоритма? Не говоря уже про страшный код...
Ну почему же не поняв алгоритм, все понятно более менее. Пробегаем строку циклом, каждый символ сначала переводя в ascii код функцией ord, затем, с помощью функции chr переводим ascii код в символ. А по поводу корявости кода, ну в стране у нас тоже бардак творится, воры кругом, причем, начиная с верха и заканчивая всякими "срочными обновлениями броузеров", но живем ведь. Так и тут, работает, свою задачу выполняет и ладно.

Ты о чем? Мы не ели твой мозг — ты ела наши Улыбаюсь
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.

Хз, я не очень просто не очень во всё это верю, во всякие там сатурны и прочую поебень.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines