Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Подскажите алгоритм (http://forum.oszone.net/showthread.php?t=30433)

wolland 09-06-2003 21:56 208616

Люди, подскажите алгоритм написания декодера.
Текст зашифрован простейшим образом, (вместо "A"-->"M" ну что то вроде того).
Это вообще выполнимо без создания базы словаря?

Sean Ingumsky 10-06-2003 14:12 208617

wolland
Это нетрудно сделать с помощью автозамены в скрипте. Вот, например, в Perl'e "алгоритм" перевода из одной кодировки в другую cледующий:
$vl=~tr/\200-\257\340-\361/\300-\377\250\270/;
$vl - исходная строка; между первым и вторым "/" (1) находятся коды символов исходной кодировки, между вторым и третьим "/" (2) - кодировка, в которую надо перегнать строку. В результате $vl меняет свою кодировку. Для того, чтобы закодировать строку надо в (1) перечислить символы, подлежащие кодированию, а в (2), соответственно, символы, в которые надо перекодировать.
То есть:
Код:

my $vl='qwertyu';
$vl=~tr/uytrewq/jhgfdsa/;
print '$vl='."$vl\n";

В результате должна появиться строка:
Код:

$vl=asdfghj

pauluss 27-06-2003 17:56 208618

Нехороший метод защиты текста. При желании просто написать прогу, которая будет в цикле перебирать код (то бишь последовательность этих самых замен  "А"-->"Б", потом "А"-->"В" и так далее) и проверять по какому нибудь словарю осмысленный текст. Достаточно например декодировать первые 100 байт и код будет раскрыт довольно быстро. Ничуть не сложнее, но куда эффективнее использовать старое доброе логическое ИЛИ, при этом в качестве ключа использовать любой файл. Прикол вот в чем:
Логическое ИЛИ (сравнение байт и результат)
Первый аргумент    0101
Второй                    0011
                               ------
Результат                0110

Потом, если делать обратную операцию, то есть
0011
0110
------
0101  исходное значение востанавливаеться.
Просто и довольно мощно, никаким перебором код не вскрыть, тем более, если в качестве кода используеться большой файл.
Это конечно тоже не идеал, но все же круче чем простая замена символов.

Добавлено:

wolland

Я только что догнал, может наоборот цель прочитать зашифрованный таким образом текст. Впрочем я и на этот вопрос ответил.

Добавлено:

Цитата:

Это вообще выполнимо без создания базы словаря?
Торможу, сразу даже все не прочитал. Бывает, конец дня.

Совсем необязательно словарь создавать, посмотри словари известных переводчиков, не помню в каком (по моему в сократе) словарь- обычный текстовый файл, при дкодировании проверяй на максимальное совпадение слов. Есть еще не переводчики, а имено словари на CD. Русско-английский например. Он тоже прекрасно подходит.


Время: 00:20.

Время: 00:20.
© OSzone.net 2001-