Контрольная работа в unиx-стиле
Приближается экзаменационная сессия. Сокурсники попросили меня помочь им с контрольной работой по дисциплине «Основи захисту інформації» («Основы защиты информации»). Поэтому в этот раз я решил максимально автоматизировать процесс выполнения поставленной задачи.
Контрольная состоит из четырёх заданий по криптографии. Главная суть каждого: зашифровать произвольный текст заданным методом или алгоритмом.
Общая идея была такова: составить файлы с исходными данными для заданий (открытые тексты, шифроключи), написать программы для произведения расчётов и подготовить шаблоны, по которым работа будет собираться воедино.
По новой традиции документы составлены на LaTeX-е. Расчёт делается на Perl-е. Шаблонами заправляет Template Toolkit. А всю работу координирует GNU Make.
Вот, например, кусочек шаблона первого задания:
\subsection*{Створення ключа}
Вихідним алфавітом є~малі літери українського алфавіту та~дефіс:
\begin{center}
\begin{tabular}{*{%% Abc.size %%}{|c}|}
\hline
%%- FOREACH a IN Abc %%
\verb#%% a %%#
%%- LAST IF loop.last %% &
%%- END %%
\\ \hline
\end{tabular}
\end{center}
Теперь необходимо подготовить к печати, допустим, 25 работ. Наполняем
dat-файлы исходными данными, выполняем команду make batch и через
две минуты получаем 25 PDF-файлов. Класс!
Польза, которую я извлёк из работы: нашёл баг в TT, вспомнил про КОИ-8, лучше разобрался с GNU Make-ом и git-ом, осилил DES, помог людям (:
Исходный код доступен на GitHub-е. А ещё есть пример уже готовой контрольной (PDF, 340 КБ, 34 стр.), если интересно.