Показать полную графическую версию : Подскажите алгоритм
Люди, подскажите алгоритм написания декодера.
Текст зашифрован простейшим образом, (вместо "A"-->"M" ну что то вроде того).
Это вообще выполнимо без создания базы словаря?
Sean Ingumsky
10-06-2003, 14:12
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
Нехороший метод защиты текста. При желании просто написать прогу, которая будет в цикле перебирать код (то бишь последовательность этих самых замен "А"-->"Б", потом "А"-->"В" и так далее) и проверять по какому нибудь словарю осмысленный текст. Достаточно например декодировать первые 100 байт и код будет раскрыт довольно быстро. Ничуть не сложнее, но куда эффективнее использовать старое доброе логическое ИЛИ, при этом в качестве ключа использовать любой файл. Прикол вот в чем:
Логическое ИЛИ (сравнение байт и результат)
Первый аргумент 0101
Второй 0011
------
Результат 0110
Потом, если делать обратную операцию, то есть
0011
0110
------
0101 исходное значение востанавливаеться.
Просто и довольно мощно, никаким перебором код не вскрыть, тем более, если в качестве кода используеться большой файл.
Это конечно тоже не идеал, но все же круче чем простая замена символов.
Добавлено:
wolland
Я только что догнал, может наоборот цель прочитать зашифрованный таким образом текст. Впрочем я и на этот вопрос ответил.
Добавлено:
Это вообще выполнимо без создания базы словаря?
Торможу, сразу даже все не прочитал. Бывает, конец дня.
Совсем необязательно словарь создавать, посмотри словари известных переводчиков, не помню в каком (по моему в сократе) словарь- обычный текстовый файл, при дкодировании проверяй на максимальное совпадение слов. Есть еще не переводчики, а имено словари на CD. Русско-английский например. Он тоже прекрасно подходит.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.