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 (?¿)
Покинул форум
Сообщений всего: 16
Дата рег-ции: Янв. 2021
Помог: 0 раз(а)
Хех, здравствуйте, я снова здесь и проблемы реализации размером со знатный такой вагон и маленькую тележку, разумеется, тоже со мной.
Мне необходимо осуществить программный взлом шифра Цезаря
Ориентировочный алгоритм (постановка задачи):
1. Определить частоты символов алфавита. Занести их в массив FiA.
2. Определить частоты символов шифротекста. Занести их в массив FiC:
а) вычислить сколько раз случается тот или иной символ в шифротексте (занести в массив freq)
б) определить количество символов в шифротексте (l)
в) нормировать частоты символов, вычисленные в пункте 2 (a), результат поместить в массив FiC, то есть FiC[i]=freq[i]/l.
3. Найти такое значение k, при котором сумма одноименных разниц d была бы минимальной:
а) вычислить для всех значений k=0,1, ..., 26 суммы разниц
d=∑_(j=0)^26|FiA[j]-FiC[m]|, где m= (j-k+27) mod27
б) найти минимальную сумму разниц d;
в) запомнить значение k.
4. Расшифровать шифротекст, используя ключ k.
Но алгоритм выше, можно применять к текстам только английского языка. Это объясняется тем, что процесс анализа шифротекста выполнялся по модулю 27 (26 букв латинского алфавита и пробел). В случае анализа шифров других языков необходимо изменить в зависимости от количества букв в алфавите рассматриваемого значения модуля, по которому ведется анализ (русский)
Я перевернула весь Интернет в поисках хоть чего-то, отдалённо приближенного к истине, но ничегошеньки похожего мне найти не удалось, кругом одна лишь зашифровка, может кто-то уже сталкивался с похожим заданием, ибо у меня руки опускаются, а понимания совсем нет (ниже прикреплю сам файл таблицы с алфавитом и шифротекстом).
Дайте обратную связь, если у вас есть хоть какое-то понимание происходящего
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
Aleri пишет:
Мне необходимо осуществить программный взлом шифра Цезаря
Дайте обратную связь, если у вас есть хоть какое-то понимание происходящего
Добрый день!
Вы приложили Ворд документ.
В таблице2 потерян символ "ь" м.б ещё что-то неверно.
Вероятно и в самом тексте для расшифровки тоже есть ошибки, потому, что результат получается странный
Цитата:
е одной интересной функцией программ влетс стеганографи теганографи то возможност прикреплени ифротекста в лбой файл с сохранением его работоспособности одобно тому как револционер писали писма молоком на полх книг так и здес заифрованнй текст можно записат например в файл картинки никто не догадаетс то фотографии которми в обмениваетес с ваим деловм партнером содержат секретну информаци
Массивы сделал, но для поиска ключа не использовал.
Результат получен перебором. Ключь шифрования -9
е одной интересной функцией программ влетс стеганографи теганографи то возможност прикреплени ифротекста в лбой файл с сохранением его работоспособности одобно тому как револционер писали писма молоком на полх книг так и здес заифрованнй текст можно записат например в файл картинки никто не догадаетс то фотографии которми в обмениваетес с ваим деловм партнером содержат секретну информаци
*/
?>
Когда разберётесь с данными, приложите их,пожалуйста, в .тхт файле.
Удачи!
Покинул форум
Сообщений всего: 16
Дата рег-ции: Янв. 2021
Помог: 0 раз(а)
Vladimir Kheifets пишет:
Aleri пишет:
Мне необходимо осуществить программный взлом шифра Цезаря
Дайте обратную связь, если у вас есть хоть какое-то понимание происходящего
Добрый день!
Вы приложили Ворд документ.
В таблице2 потерян символ "ь" м.б ещё что-то неверно.
Вероятно и в самом тексте для расшифровки тоже есть ошибки, потому, что результат получается странный
Цитата:
е одной интересной функцией программ влетс стеганографи теганографи то возможност прикреплени ифротекста в лбой файл с сохранением его работоспособности одобно тому как револционер писали писма молоком на полх книг так и здес заифрованнй текст можно записат например в файл картинки никто не догадаетс то фотографии которми в обмениваетес с ваим деловм партнером содержат секретну информаци
Массивы сделал, но для поиска ключа не использовал.
Результат получен перебором. Ключь шифрования -9
е одной интересной функцией программ влетс стеганографи теганографи то возможност прикреплени ифротекста в лбой файл с сохранением его работоспособности одобно тому как револционер писали писма молоком на полх книг так и здес заифрованнй текст можно записат например в файл картинки никто не догадаетс то фотографии которми в обмениваетес с ваим деловм партнером содержат секретну информаци
*/
?>
Когда разберётесь с данными, приложите их,пожалуйста, в .тхт файле.
Удачи!
Я вам безумно благодарна, спасибо, что так заморочились и реализовали всё это
А насчёт ошибок, то уже пробелы в самом исходнике который нам выдал преподаватель, мол главное, чтобы была хоть какая-то читабельность, ибо относительно русского алфавита данный метод работает слегка кривовато
Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014
Помог: 10 раз(а)
Интересно. Если зашифровано одно слово, то его можно поискать в словаре и выделить жирным при выводе (как я понял, - необязательно прибегать к исследованию частот символов в строке, хотя, наверное, так красивее).
Интересно стало. Правильно ли мыслю?!
Добрый день!
"Шифр Цезаря — это вид шифра подстановки, в котором каждый символ
в открытом тексте заменяется символом, находящимся на некотором
постоянном числе позиций левее или правее от него в алфавите." См. здесь: https://en[dot]wikipedia[dot]org/wiki/Caesar_cipher
В Ваше коде Вы сделали только положительный сдвиг, а должен быть и отрицательный.
Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014
Помог: 10 раз(а)
У меня получилось добавить немного эвристики для поиска по словарю существительных.
Точность указания ключа я не стал трогать - назовём это смещением.
Будем считать, что средняя длина корня русского слова = 4 буквам.
Тогда строку можно разделять в цикле по 4 символа, удаляя с каждым проходом первый
и искать только слова с корнем минимум из 4 букв. Такой подход позволяет отсеять "мусор" - ошибочные симолы или "шум", если использовать специальные термины.
Следовательно, получается, можно взять любой фрагмент строки и попытаться найти смещение перебором с поиском по словарю. Однако, при таком подходе возможны совпадения, т.е. неверные результаты (но, думаю, редко).
Можно протестировать. Фрагмент строки взял этот: чычмщйэссиучычщгхси
Результат удовлетворительный. Найдены возможные смещения: 9, 22, 24.
24 и есть верный результат.
Протестировать можно тут: http://comb[dot]org[dot]ru/z_heuristic.php
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
Добрый день, Aleri!
Я убрал Вашу таблицу частотности символов алфавита.
Кажется, она не совсем достоверна.
Вместо неё добавил массив часто встечающихся в русских текстах символов
и написал взлом шифра с частоным алгоритмом.
Ключевой символ алфавита: 'с' порядковый номер в алфавите:18 ключ: 9 - 18 = -9
Расшифрованный текст:
е одной интересной функцией программ влетс стеганографи теганографи то возможност прикреплени ифротекста в лбой файл с сохранением его работоспособности одобно тому как револционер писали писма молоком на полх книг так и здес заифрованнй текст можно записат например в файл картинки никто не догадаетс то фотографии которми в обмениваетес с ваим деловм партнером содержат секретну информаци
*/
?>
Удачи!
dcc0
Отправлено: 07 Февраля, 2021 - 19:32:35
Участник
Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014
Помог: 10 раз(а)
Vladimir Kheifets,
Я где-то недавно читал, что в русских текстах чаще встречается буква "а", потом только "о".
Цитата:
тфсфрфзфн
Код, получается, в расчёте только на большие строки слово "тфсфрфзфн" не получилось расшифровать.
----- Март 2021. Бросил программирование
Aleri
Отправлено: 07 Февраля, 2021 - 22:08:03
Новичок
Покинул форум
Сообщений всего: 16
Дата рег-ции: Янв. 2021
Помог: 0 раз(а)
dcc0 пишет:
У меня получилось добавить немного эвристики для поиска по словарю существительных.
Точность указания ключа я не стал трогать - назовём это смещением.
Будем считать, что средняя длина корня русского слова = 4 буквам.
Тогда строку можно разделять в цикле по 4 символа, удаляя с каждым проходом первый
и искать только слова с корнем минимум из 4 букв. Такой подход позволяет отсеять "мусор" - ошибочные симолы или "шум", если использовать специальные термины.
Следовательно, получается, можно взять любой фрагмент строки и попытаться найти смещение перебором с поиском по словарю. Однако, при таком подходе возможны совпадения, т.е. неверные результаты (но, думаю, редко).
Можно протестировать. Фрагмент строки взял этот: чычмщйэссиучычщгхси
Результат удовлетворительный. Найдены возможные смещения: 9, 22, 24.
24 и есть верный результат.
Протестировать можно тут: http://comb[dot]org[dot]ru/z_heuristic.php
Покинул форум
Сообщений всего: 16
Дата рег-ции: Янв. 2021
Помог: 0 раз(а)
Vladimir Kheifets пишет:
Добрый день, Aleri!
Я убрал Вашу таблицу частотности символов алфавита.
Кажется, она не совсем достоверна.
Вместо неё добавил массив часто встечающихся в русских текстах символов
и написал взлом шифра с частоным алгоритмом.
Ключевой символ алфавита: 'с' порядковый номер в алфавите:18 ключ: 9 - 18 = -9
Расшифрованный текст:
е одной интересной функцией программ влетс стеганографи теганографи то возможност прикреплени ифротекста в лбой файл с сохранением его работоспособности одобно тому как револционер писали писма молоком на полх книг так и здес заифрованнй текст можно записат например в файл картинки никто не догадаетс то фотографии которми в обмениваетес с ваим деловм партнером содержат секретну информаци
*/
?>
Удачи!
Здравствуйте!
Я вам очень признательна и согласна, что достоверность таблицы оставляет желать лучшего, но это главный фетиш задания
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
dcc0 пишет:
Vladimir Kheifets,
Доброго вечера!Да. Я не прав. Неправильно запомнил.
Но вроде бы так по частотности: о, е, а
Добрый день!
Ради интереса взял на с wiki таблицу
"Статистика частотности букв русского языка (на материале НКРЯ)"
Расчитал частота букв в русском языке (частотность>5%)
После всех этих мучений получите чистую расшифровку
Цитата:
еще одной интересной функцией программы является стеганография теганография это возможность прикрепления шифротекста в любой файл с сохранением его работоспособности подобно тому как революционеры писали письма молоком на полях книг так и здесь зашифрованный текст можно записать например в файл картинки никто не догадается что фотографии которыми вы обмениваетесь с вашим деловым партнером содержат секретную информацию
Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014
Помог: 10 раз(а)
Vladimir Kheifets, доброго дня!
Думаю, что ситуация с этим такая:
google анализирует тексты из интернета. Помимо классических текстов - это могут быть: запросы, комментарии, строчки из метаданных и т.д.
В связи с этим предполагаю, что и результат отличный.
Данные НКРЯ - это, скорее всего, данные на основе анализа литературных, научных
текстов. В случае с НКРЯ перевес на стороне классических русских текстов,
я бы сказал, - нормальных текстов. Образно выражаясь, google жуёт вершки, а статистика НКРЯ - это корешки.
Но есть интересный факт (можно сказать, противоречие, почти), который отчасти объясняет ответ, полученный Вами от Google. "На какую букву больше всего слов в русском языке?". Ответ: "п". Весы качнулись в Вашу пользу.
P.S. Интересно с Цезарем: есть шанс найти достаточно большой текст без ошибок с первого раза на листке бумаге, если попадётся слово с двумя нн.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.