Шифр Цезаря кодирование и Брут Форсе (Brute Force) на java

 

В процессе обучения java возникла задача создать программу по кодирования текста на основе шифра Цезаря. Шифр основывается на составленном нами алфавите. Ключ шифровки – это смещение по алфавиту на N-шагов вправо. Так вот задача в шифровке и дешифровке по зарание известному нам ключу. Это не сложно. Сложнее взломать шифр Цезаря грубой силой Brute Force, т.е. перебором возможных вариантов.

Скачать и поюзать программу на Java+Swing со скриншота вы можете по ссылке. Указываем путь к текстовому файлу в формате UTF-8 и указываем ключ для шифрования, можем оставить поле пустым, тогда ключ сгенерится автоматически. При расшифровке можно не указывать файл, он создаться автоматически.

Пример Алфавита (возможны варианты с английскими буквами и спец. символами)

Брут Форсе (Brute Force)

Как один из вариантов решения данной задачи, это подсчет всех пробелов плюс запятых с пробелами и т.д. в  каждом из вариантов. С большой долей вероятности оригинал текста – это вариант с бОльшим количеством пробелом и запятых с пробелами.

Баги и недочеты

  1. Учет только одной строки из файла. Решение на java для учета всех строк из файла с помощью BufferedReader и ReadLine() в цикле. Т.е. читаем все строки по одной и записываем в StringBuilder с учетом переноса на новую строку \n.

2. Не учет символов, которых нет в нашем алфавите. Т.е. если символа нет в нашем алфавите, то оставляем его без изменения. Это нужно учитывать в кодировании и декодировании.

Как создать exe программу, которая будет запускаться на компьютере

Сначала создаем jar с помощью Idea, затем используем Launch4j, подробности смотрите по ссылке.

Проблемы при создании jar файла

При создании jar файла могут возникнуть различные ошибки. Рекомендуем сравнить в консоли версии java и java компилятора, они должны совпадать. Скачать и установить jdk лучше с сайта Oracle, как скачать и установить подробнее по ссылке.

Для проверки версий в командной строке:


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *