Подскажите алгоритм

Ответить
Аватара пользователя
wolland

Подскажите алгоритм

Сообщение wolland »

Люди, подскажите алгоритм написания декодера.

Текст зашифрован простейшим образом, (вместо "A"-->"M" ну что то вроде того).

Это вообще выполнимо без создания базы словаря?
Аватара пользователя
Sean Ingumsky

Re: Подскажите алгоритм

Сообщение Sean Ingumsky »

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
Аватара пользователя
Guest

Re: Подскажите алгоритм

Сообщение Guest »

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

Логическое ИЛИ (сравнение байт и результат)

Первый аргумент    0101

Второй                    0011

                               ------

Результат                0110



Потом, если делать обратную операцию, то есть

0011

0110

------

0101  исходное значение востанавливаеться.

Просто и довольно мощно, никаким перебором код не вскрыть, тем более, если в качестве кода используеться большой файл.

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



Добавлено:



wolland



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



Добавлено:




Цитата:



Это вообще выполнимо без создания базы словаря?



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



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

Вернуться в «Программирование и базы данных»