Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Шифр Цезаря на php (?¿) [2]
Форумы портала PHP.SU » » Вопросы новичков » Шифр Цезаря на php (?¿)

Страниц (2): « 1 [2]
 

16. Vladimir Kheifets - 08 Февраля, 2021 - 18:11:10 - перейти к сообщению
dcc0 пишет:
...Но есть интересный факт (можно сказать, противоречеие, почти), который отчасти объясняет ответ, полученный Вами от Google. "На какую букву больше всего слов в русском языке?". Ответ: "п". Весы качнулись в Вашу пользу.
P.S. Интересно с Цезарем: есть шанс найти достаточно большой текст без ошибок с первого раза на листке бумаге, если попадётся слово с двумя нн.

Думаю, что не столь важно какие символы окажутся в этой частотной выборке.
Попытаемся понять при каких условиях работоспособенный частотный алгоритм.
К счастью, погода сейчас нелётная и занимаемся мы не физикой элементарных частиц.
В том смысле, что нам не нужны синхрофазатроны для проверки гипотез.
Решил начать с начала. Сделал чистое шифрование и тестирую алгоритмы расшифровки.
Покажу результаты.
17. Aleri - 08 Февраля, 2021 - 22:12:56 - перейти к сообщению
Vladimir Kheifets, здравствуйте, это просто прелесть, я и не думала, что такое возможно, ибо изначально было условлено, что расшифровка будет слегка кривая, но вы смогли реализовать всё это чудо, и, о боги, оно работает, спасибо ещё раз Победа
18. Vladimir Kheifets - 10 Февраля, 2021 - 13:52:20 - перейти к сообщению
Добрый день, Aleri!

Изввините, меня, за накладки, которые Вы ещё заметите.
Теперь подчистил. См. PHP class CaesarCipher в zip-файле.
При вызове класса необходимо определить алфавит
в ассоциативном массиве кеу: символ, value: частотность символа в текстах.
Протестировал пока на текстах на русском языке.

https://www.alto-booking.com/tes...test=1&key=9
Цитата:
еще одной интересной функцией программы является стеганография теганография это возможность прикрепления шифротекста в любой файл с сохранением его работоспособности подобно тому как революционеры писали письма молоком на полях книг так и здесь зашифрованный текст можно записать например в файл картинки никто не догадается что фотографии которыми вы обмениваетесь с вашим деловым партнером содержат секретную информацию

https://www.alto-booking.com/tes...est=2&key=10
Цитата:
молоко

https://www.alto-booking.com/tes...test=3&key=5
Цитата:
суп из топора

https://www.alto-booking.com/tes...test=4&key=9
Цитата:
кот


По ходу обсуждения алгоритма возник вопрос о его работоспособности на коротких текстах.
dcc0 пишет:
Код, получается, в расчёте только на большие строки слово "тфсфрфзфн" не получилось расшифровать.

Теперь могу ответить.
Во всех случаях, тесты должны шифроваться и расшифровываться на одном
и том же алфавите, напрример, пробел 0-символ, алфавит без буквы ё, как в задаче Aleri.
Метод BruteForceDecoding работет стабильно.
Метод DecodingByCharacterFrequency работет только с техтами с проявленим
частотности одного символа, например, "молоко"
и не работает в случаях, если все символы в тексте уникальны, например, "кот".
Это код тестевого скрипта.
Спойлер (Отобразить)
Удачи!
19. dcc0 - 10 Февраля, 2021 - 15:26:15 - перейти к сообщению
Vladimir Kheifets Доброго!

Цитата:
. и не работает в случаях, если все символы в тексте уникальны, например, "кот".

Предположение: может быть, проблема с дешифрованием коротких слов решается добавлением лишних
символов к слову в начало, конец слова или, может быть, повторением самого слова.

P.S.
"суп из топора" нашёл, описанным ранее мной методом (сдвиг + поиск по словарю с дроблением слова). Картинку прикрепляю.
Интересно со словом "кот" и со словами из трёх букв в принципе; есть шанс найти прибавлением разных символов, но можно найти и ошибочный "корень".
Вот, что у меня получилось: шифрую слово "кот" ключом 9, получаю "учы".
Пробую расшифровать, повторив слово и добавив символы в начало и конец из него же "ччччччччччыучыучыыыыыыы". Расшифровываю указанным выше методом. Получаю результат с верным ключом: ссылка (загружается долго) Результат, конечно, условно удовлетворительный.
20. Vladimir Kheifets - 10 Февраля, 2021 - 20:13:47 - перейти к сообщению
dcc0 пишет:
[Предположение: может быть, проблема с дешифрованием коротких слов решается добавлением лишних
символов к слову в начало, конец слова или, может быть, повторением самого слова.
P.S.
"суп из топора" нашёл, описанным ранее мной методом (сдвиг + поиск по словарю с дроблением слова). Картинку прикрепляю.
Интересно со словом "кот" и со словами из трёх букв в принципе; есть шанс найти прибавлением разных символов, но можно найти и ошибочный "корень".
Вот, что у меня получилось: шифрую слово "кот" ключом 9, получаю "учы".
Пробую расшифровать, повторив слово и добавив символы в начало и конец из него же "ччччччччччыучыучыыыыыыы". Расшифровываю указанным выше методом. Получаю результат с верным ключом: ссылка (загружается долго) Результат, конечно, условно удовлетворительный.


По поводу добавления разных символов к коротким словам.
Есть хорошая поговорка: "Знал бы, где упасть, солому подстелил".
Чтобы сработал метод DecodingByCharacterFrequency нужно поднять частность
только одного символа, который даст возможность вычислить верный ключ шифрования.
Можно конечно перебирать все символы шифротекта с каждым из часто употребимым символом языка,
но при этом возрастёт количество переборов и их может оказаться больше чем при методе BruteForceDecoding.
Метод BruteForceDecoding успешно расшифровавывает короткие слова и работает быстро.
Теперь про слоги, корни и болле глубокий ленгвистиский анализ.
Заманчиво, но думаю, что в связи с шифром Цезаря это нецелесообразно.
Уже давно всем стало понятно, что он легко и быстро взламывается.

p.s для тестирования класса CaesarCipher добавил английский и немецкий частотные алфавиты

https://www.alto-booking.com/tes...test=7&key=5
Цитата:
going to the supermarket martha is at the grocery store getting ready for a house party she has a list of what she needs with her as she goes along the first section she comes has produce martha sees apples bananas cherries grapes and strawberries


https://www.alto-booking.com/tes...est=5&key=10
Цитата:
urlaub in den bergen herr und frau meyer fahren oft in die berge berge gibt es in deutschland, österreich, italien und der schweiz ihr reiseziel ist in diesem jahr die schweiz dort kann man viel wandern in einem berghotel haben sie ein zimmer gebucht

 

Powered by ExBB FM 1.0 RC1