PHP.SU

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


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

> Описание: Шифр Цезаря, класс CaesarCipher
Vladimir Kheifets
Отправлено: 13 Февраля, 2021 - 17:11:30
Post Id



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


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


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




Добрый день!

Хотел бы продолжить обсуждение темы "Шифр Цезаря", начатую Aleri
в разделе "Вопросы новичков" и показать актуальныю версию класса CaesarCipher.
Предыдущая версия умела взламывать шифротекст двумя методами
BruteForceDecoding и DecodingByCharacterFrequency.

Оба определяли ключи шифрования, дешифровывали шифротексты методом decode
и возвращали для выбора все найденные варианты взлома.
В новой версии в метод decode добавлено вычисление статитический рейтингов
дешифрованных текстов.

Теперь методы BruteForceDecoding и DecodingByCharacterFrequency
возвращают упрядоточенные по рейтингам варианты декодирования.
Это позволяет определять один наиболее достоверный вариант взлома шифротекста.
Для тестированиия добавлены частотный алвавиты - русский, английский,
немецкий и латинский, а также тестовые тексты на этих языках.
Постарюсь, сделать описание класса и выложу ссылку для скачивания.
Можете посмотреть демо версию здесь.

https://www.alto-booking.com/dem...SU/CaesarCipher/

Буду блогодарен за вопросы, замечания и предложения.

р.s. для тех, кто знает немецкий, в немецком тесте, текст 2 на баварском,
а текст 3 его перевод на немецкий.
Скачать файл: ClassCaesarCipher_v1_2.zip
Скачан раз: 3

(Отредактировано автором: 25 Февраля, 2021 - 16:14:15)

 
 Top
Vladimir Kheifets
Отправлено: 17 Февраля, 2021 - 13:55:14
Post Id



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


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


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




(дополнение)

PHP класс CaesarCipher
https://www.alto-booking.com/dem...SU/CaesarCipher/

Cоздание экземпляра класса.
PHP:
скопировать код в буфер обмена
  1. $CaesarСipher = new CaesarCipher(array $alphabet_frequency, int|null $min_frequency);

Спойлер (Отобразить)

Методы класса CaesarCipher.

1. Метод encode

Шифрует текст заданным ключом
PHP:
скопировать код в буфер обмена
  1. $object = $CaesarСipher -> encode(string $inp_text, int $key);

Спойлер (Отобразить)


2. Метод decode

Дешифрует текст заданным ключом и вычисляет частотный рейтинг дешифрованного текста.
PHP:
скопировать код в буфер обмена
  1. $object = $CaesarСipher -> decode(string $inp_text, int $key);

Спойлер (Отобразить)


3. Метод BruteForceDecoding

Предназначен для взлома шифра перебором всех ключей
PHP:
скопировать код в буфер обмена
  1. $object = $CaesarСipher -> BruteForceDecoding(string $inp_text);

Спойлер (Отобразить)


4. Метод DecodingByCharacterFrequency

Предназначен для взлома шифра с вычислением ключей шифрования по частности символов
алфавита и зашифрованного текста.
PHP:
скопировать код в буфер обмена
  1. $object = $CaesarСipher -> DecodingByCharacterFrequency(string $inp_text, int|null $MaxNumberDecoding);

Спойлер (Отобразить)


5. Метод GetCharacterFrequency

Предназначен для вычисления частотность уникальных символов заданного текста или алфавита.
Применяется в методе DecodingByCharacterFrequency и для получения $alphabet_frequency
см. выше создание экземпляра класса
PHP:
скопировать код в буфер обмена
  1. $object = $CaesarСipher -> GetCharacterFrequency(
  2. string|array $buf,
  3. null|string|bool $inp_alphabet,
  4. int|null $decimals, int|null $sort_col);

Спойлер (Отобразить)

Скачать файл: ClassCaesarCipher_v1_2.zip
Скачан раз: 6

(Отредактировано автором: 25 Февраля, 2021 - 16:14:45)

 
 Top
dcc0
Отправлено: 25 Февраля, 2021 - 21:31:32
Post Id


Участник


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


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




Интересно: применял ли кто-нибудь принцип шифра Цезаря и статистические методы для расшифровок античных письменностей.
Ведь по идее можно сопоставлять по фонетическому принципу какую-либо письменность и, например, английский алфавит, при определённых условиях, конечно же.
 
 Top
Vladimir Kheifets
Отправлено: 25 Февраля, 2021 - 21:50:35
Post Id



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


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


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




dcc0 пишет:
Интересно: применял ли кто-нибудь принцип шифра Цезаря и статистические методы для расшифровок античных письменностей.
Ведь по идее можно сопоставлять по фонетическому принципу какую-либо письменность и, например, английский алфавит, при определённых условиях, конечно же.


Добрый день!
С помощью метода GetCharacterFrequency класса CaesarCipher
был проведён статистический анализ частей 1,2 "De Catilinae coniuratione" (конец 40-х годов до н.э.) с целью расчёта частотного алфавита латинского языка
https://www.alto-booking.com/dem...terFrequency.php
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Прочее »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB