Реализация и криптоанализ шифра гаммирования

Представляю вам очередную вылазку в мир криптографии. На этот раз в роли жертвы выступает шифр гаммирования. Он не из легких, но поддался явно легче, чем перестановочный. Хотя идея самого шифра мне кажется гораздо проще — всего одна операция и никаких премудростей. Шифровать данные этим алгоритмом очень просто, но давайте посмотрим, просто ли будет его взломать?

Прежде чем продолжить чтение, обратите внимание на реализации других шифров

Шифр гаммирования

Вся суть шифра описывается красивым схематичным изображением, которое я позаимствовал у википедии.gammacode1

читать далее «Реализация и криптоанализ шифра гаммирования»

Чтение веб-страницы с помощью Python

Доброго времени суток! Для начала у меня появился вот такой вопросик. Можно ли считать программную обработку содержимого html старничек веб-программированием? Вроде в вебе работаем, имеем дело с сетевыми протоколами и все такое. Кто точно знает ответ на этот вопрос, поделитесь в комментариях, я буду признателен.

Но перейдем к делу. Недавно в университете нам выдали интересное задание, связанное с чтением веб-страниц с помощью Pythonна. Научитесь, говорят, считывать страницы. Насколько я знаю, это весьма нетривиальная задача для решения на C/C++. Но чего только нет в стандартной библиотеке Python. Оказывается, существует специальный модуль urllib для работы с урлами. Замечательно! Даже искать не пришлось. Пара слов о том, какие функции мне понадобились из этого модуля.

Как прочитать веб-страницу с помощью Python

читать далее "Чтение веб-страницы с помощью Python"

Реализация и криптоанализ шифра простой перестановки

Всем привет! Продолжается погружение в увлекательный и местами запутанный мир криптографии. Шифр простой перестановки самый легкий из перестановочных, но даже его взлом занял у меня в два раза больше времени и сил, чем шифр Цезаря. Пришлось попотеть с выбором алгоритма криптоанализа. Сначала я пробовал частотный анализ биграмм, но для этого метода нужен очень большой литературный текст, иначе частоты никогда не совпадут с эталонными. Поэтому окончательный выбор пал на метод запрещенных биграмм. Я расскажу о нем подробнее, но сначала пара слов о самом шифре, поехали!

Прежде чем продолжить чтение, обратите внимание на реализации других шифров

Шифр простой перестановки

Определение перестановки(подстановки, расстановки) приводить не буду, о каком шифре может идти речь, если не знать базовых определений?

Шифр перестановки называется простым, если элементы открытого текста меняют свои позиции только один раз. Существуют шифры множественной перестановки, в которых первым делом меняются символы в каждом блоке, а потом, например, меняются местами сами блоки. Этих крутых ребят мы сейчас трогать не будем и заострим свое внимание исключительно на первой разновидности шифра.

Итак, суть. Дан ключ — перестановка длины N, не большей, чем длина открытого текста. Во время шифрования текст делится на блоки длины N и в каждом блоке символы меняются местами в соответствии с перестановкой. Расшифровка выполняется аналогично.

читать далее «Реализация и криптоанализ шифра простой перестановки»

Создание каталога электронной библиотеки с помощью Python

Доброго денечка или вечерочка всем, кто забрел на эту страничку. Знаете, я недавно исполнил свою давнюю мечту. Дело в том, что с тех пор, как количество папок в моей электронной библиотеке перевалило за десяточку, я начал задумываться о структурированном каталоге, в котором будут красиво перечислены все собранные мной сочинения. Чтобы можно было одним легким взглядом окинуть простор прочитанных или заброшенных книг.

Впервые я задумался об этом в десятом классе. Уже тогда я точно знал, что буду поступать на IT, поэтому логичная мысль пришла в голову: «давай, ты же программист!». На тот момент я умел писать Hello world в Си и решать некоторые задачки из ЕГЭ. Воодушевился и начал гуглить! Естественно, знаний совершенно недостаточно, ничего у меня не получилось, я бросил эту затею. В свое оправдание могу сказать, что работа с каталогами в Си совсем нетривиальна, особенно для десятиклассника, у которого в школе не было информатики.

И вот буквально пару дней назад я вновь заглянул в папочку «Library», дабы закачать что нибудь свеженькое на электронную книгу. И меня поразил гром среди ясного неба: «Я же умею питон! Наверняка в нем можно за пару строк описать любую директорию». Оказалось, что так и есть. Пять минут в поиске и я выбрал кандидата в мои помощники. Итак, встречайте!

Модуль os в Python

читать далее «Создание каталога электронной библиотеки с помощью Python»

Создание формы обратной связи на PHP

Всем привет! Произошла небольшая заминка с разметкой Schema.org, но все разрешилось успешно. В скором времени подробно опишу ее внедрение. Внесу свою лепту в эту загадочную тему. Загадочную потому, что совсем не просто с наскока взять и внедрить на свой сайт микроразметку. А уж тем более выпилить старую. Но об этом позже, а сегодня расскажу о том, как создавал форму обратной связи на PHP.

Сразу после внедрения в проект теста на знание языка, мне понадобилось добавить возможность потенциальным клиентам оставить заявку на запись в группу, как говорится, не вставая с дивана. Заявка должна быть заполнена в специальной форме и приходить по почте прямо в офис. После чего с клиентом созваниваются и уточняют детали.

Прогуглил, нашел функцию mail, обрадовался, что все велосипеды уже давно написаны. Значит можно просто собрать форму и отправить ее на электронный адрес, отлично.

Для начала глянем на саму функцию отправки письма, я уверен, что она еще много раз мне пригодится. Будет полезно сохранить ее синтаксис и описание.

Функция mail в PHP

читать далее «Создание формы обратной связи на PHP»