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 класс CaesarCipher
Форумы портала PHP.SU » Разное » Прочее » Шифр Цезаря, PHP класс CaesarCipher

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

1. Vladimir Kheifets - 13 Февраля, 2021 - 17:11:30 - перейти к сообщению
Добрый день!

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

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

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

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

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

р.s. для тех, кто знает немецкий, в немецком тесте, текст 2 на баварском,
а текст 3 его перевод на немецкий.
2. Vladimir Kheifets - 17 Февраля, 2021 - 13:55:14 - перейти к сообщению
(дополнение)

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);

Спойлер (Отобразить)
3. dcc0 - 25 Февраля, 2021 - 21:31:32 - перейти к сообщению
Интересно: применял ли кто-нибудь принцип шифра Цезаря и статистические методы для расшифровок античных письменностей.
Ведь по идее можно сопоставлять по фонетическому принципу какую-либо письменность и, например, английский алфавит, при определённых условиях, конечно же.
4. Vladimir Kheifets - 25 Февраля, 2021 - 21:50:35 - перейти к сообщению
dcc0 пишет:
Интересно: применял ли кто-нибудь принцип шифра Цезаря и статистические методы для расшифровок античных письменностей.
Ведь по идее можно сопоставлять по фонетическому принципу какую-либо письменность и, например, английский алфавит, при определённых условиях, конечно же.


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

 

Powered by ExBB FM 1.0 RC1