Это вольный перевод курса статей за авторством Jeffrey Dege.

Содержание

  1. Введение
  2. Python
  3. Криптография
  4. Класс Text
  5. Класс Encryption
  6. Криптоанализ I - Числа
  7. Криптоанализ II - Фокус
  8. Криптоанализ III - Точность
  9. Программирование

Этот курс ствтей — не введение в программирование или криптографию. Этот курс статей создан для раскрытия концепции проектирования программ способных взламывать некоторые классические шифры. Простой тест:

  1. Ничего не слышали о программировании?
  2. В первый раз видите слова язык программирования и Python в одном словосочетании?
  3. Никогда не пробовали взломать шифр простой подстановки?

Если любой из ответов положительный — стоит попробовать почитать другие работы , подробно освещающие эти вопросы.

Для начала – маленькое отступление о программированни в целом. Cоздание программ-кирпичиков для решения собственных задач и программирование для решения более общих (клиентских) задач — две большие разницы. Если зайти издалека, то задача Серьезного Программиста — создание бензопилы достаточно безопасной для семилетнего ребенка и одновременно пригодной для решения задач сурового лесоруба.

Cуществует такая околоюниксовая поговорка: «Единственная необходимая ошибка — сегфолт» (имеется в виду Segmentation fault: core dumped). Такой способ обработки ошибок отрицательно влияет на психику и моральное состояние пользователей, что с одной стороны довольно забавно, но и обременительно с другой. Создание интуитивного интерфейса и вытекающая из этого проблема качественной обработки ошибок — задачи подчас более сложные чем описание алгоритма программы.

Пару десятков лет назад, когда большинство пользователей были программистами, книги компьютерной тематики писались именно с уклоном в эту сторону. UNIX придуман и воплощен как средство повышения продуктивности программистов. Очень увлекательно читать труды посвященные этой концепции, написаные командой исследователей из Bell Labs – создателей упомянутого UNIX’а:

  • Kernighan and Pike – The Unix Programming Environment: раннее описание UNIX, написанное еще до выпуска стандарта ASNI C;
  • Kernighan amd Plauger – Software Tools: описание “современных методов программирования” времен когда трава была зеленее, вода мокрее а мужчины были настоящими мужчинами;
  • Bentley – Programming Pearls: исскусство в программировании возведенное в абсолют.

А программирование тем временем стало массовой сферой, сконцентрироваванной на написании приложений для живых человеков не связанных спрограммированием.