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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Шифр Цезаря на php (?¿) [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Криптоанализ шифра Цезаря
Vladimir Kheifets
Отправлено: 08 Февраля, 2021 - 18:11:10
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




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

Думаю, что не столь важно какие символы окажутся в этой частотной выборке.
Попытаемся понять при каких условиях работоспособенный частотный алгоритм.
К счастью, погода сейчас нелётная и занимаемся мы не физикой элементарных частиц.
В том смысле, что нам не нужны синхрофазатроны для проверки гипотез.
Решил начать с начала. Сделал чистое шифрование и тестирую алгоритмы расшифровки.
Покажу результаты.

(Отредактировано автором: 08 Февраля, 2021 - 18:12:00)

 
 Top
Aleri
Отправлено: 08 Февраля, 2021 - 22:12:56
Post Id



Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Янв. 2021  


Помог: 0 раз(а)




Vladimir Kheifets, здравствуйте, это просто прелесть, я и не думала, что такое возможно, ибо изначально было условлено, что расшифровка будет слегка кривая, но вы смогли реализовать всё это чудо, и, о боги, оно работает, спасибо ещё раз Победа
 
 Top
Vladimir Kheifets
Отправлено: 10 Февраля, 2021 - 13:52:20
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Добрый день, 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 работет только с техтами с проявленим
частотности одного символа, например, "молоко"
и не работает в случаях, если все символы в тексте уникальны, например, "кот".
Это код тестевого скрипта.
Спойлер (Отобразить)
Удачи!
Скачать файл: ClassCaesarCipher.zip
Скачан раз: 31

(Отредактировано автором: 10 Февраля, 2021 - 14:20:01)

 
 Top
dcc0
Отправлено: 10 Февраля, 2021 - 15:26:15
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Vladimir Kheifets Доброго!

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

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

P.S.
"суп из топора" нашёл, описанным ранее мной методом (сдвиг + поиск по словарю с дроблением слова). Картинку прикрепляю.
Интересно со словом "кот" и со словами из трёх букв в принципе; есть шанс найти прибавлением разных символов, но можно найти и ошибочный "корень".
Вот, что у меня получилось: шифрую слово "кот" ключом 9, получаю "учы".
Пробую расшифровать, повторив слово и добавив символы в начало и конец из него же "ччччччччччыучыучыыыыыыы". Расшифровываю указанным выше методом. Получаю результат с верным ключом: ссылка (загружается долго) Результат, конечно, условно удовлетворительный.
Прикреплено изображение (Нажмите для увеличения)
2021-02-10-164850_1024x600_scrot.png

(Отредактировано автором: 10 Февраля, 2021 - 16:11:51)



-----
Март 2021. Бросил программирование
 
 Top
Vladimir Kheifets
Отправлено: 10 Февраля, 2021 - 20:13:47
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




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

(Отредактировано автором: 10 Февраля, 2021 - 20:14:49)

 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB