Простейшая криптография..
2 комментария 7 января 2006, 22:29 • Разное
На одном из занятий в АКАдемии в группе по основам программирования речь шла о шифрах и простой криптографии. Слушатели на том же занятии делали небольшие программы-шифраторы и дешифраторы. Естественно, что в качестве алгоритмов шифрации были взяты простые реализации: шифрация перестановкой и заменой. В первом случае составлялись анаграммы, и программировался только шифратор, во втором случае они делали шифратор и дешифратор. Хотя в случае замены шифр казался сложным, но на самом деле его ничего не стоило «расколоть» − об этом я им тоже рассказывал.
Собственно говоря, всё раскалывание шифров замены состоит в определении частоты использования символов. Для английского языка частота появления в тексте букв латинского алфавита будет одна, для русского − другая, для итальянского − третья и так далее. К сожалению, на то занятие я не смог найти частотные характеристики букв русского языка, так что программу-взломщик написать не удалось. Спустя же несколько дней после занятия мне попалась на глаза эта табличка с частотами букв русского алфавита − где же она была раньше?!
Частота появления в тексте букв русского алфавита, в процентах
| Буква | Частота | Буква | Частота |
| А | 8 | Р | 5 |
| Б | 2 | С | 6 |
| В | 5 | Т | 6 |
| Г | 2 | У | 2 |
| Д | 3 | Ф | менее 1 |
| Е, Ё | 9 | Х | 1 |
| Ж | 1 | Ц | менее 1 |
| З | 2 | Ч | 2 |
| И | 8 | Ш | 1 |
| Й | 1 | Щ | менее 1 |
| К | 3 | Ь, Ъ | 2 |
| Л | 4 | Ы | 2 |
| М | 3 | Э | менее 1 |
| Н | 6 | Ю | 1 |
| О | 11 | Я | 2 |
| П | 3 | пробел между словами | 18 |
Теперь по этим данным можно написать программу-дешифратор практически любого шифра замены (при условии, что смещение было постоянным и зависимость смещения линейная, в случае нелинейной зависимости нужно подумать над дешифратором).
Надо будет попробовать сделать по этой табличке веб-приложение (web-app) по дешифрации простых шифров замены, можно даже с применением технологии ajax − милое развлечение будет.
Взять PDF-версию этой статьи
ass2006 • 9 января 2006 г. в 04:39 edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
Hi, a nice blog you have here. You will surely get an bookmark 🙂 Forum
Александр Вольф • 10 января 2006 г. в 02:42 edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
Интересно, как может такая примитивная криптография соотносится с топом порносайтов от Задницы 2006?