summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Guschin <guschin.drew@gmail.com>2022-11-13 11:43:52 +0400
committerAndrew Guschin <guschin.drew@gmail.com>2022-11-13 11:43:52 +0400
commitbcee37a8dda3ced1c09a671ddf321352bbc284e9 (patch)
tree861a6f3909296f4890a96c2499a6461bcb68b242
parent9bbc7b8c31458fbf8c639794531e3d324004d8d5 (diff)
Добавлены отчёты по 1, 3, 4, 6 и 7 лабам
-rw-r--r--.gitignore18
-rw-r--r--reports/lab1/lab1.pdfbin0 -> 131330 bytes
-rw-r--r--reports/lab1/lab1.tex115
-rw-r--r--reports/lab3/lab3.pdfbin0 -> 156794 bytes
-rw-r--r--reports/lab3/lab3.tex139
-rw-r--r--reports/lab4/Makefile17
-rw-r--r--reports/lab4/lab4.pdfbin0 -> 116800 bytes
-rw-r--r--reports/lab4/lab4.tex85
-rw-r--r--reports/lab6/Makefile12
-rw-r--r--reports/lab6/lab6.pdfbin0 -> 159982 bytes
-rw-r--r--reports/lab6/lab6.tex143
-rw-r--r--reports/lab7/Makefile17
-rw-r--r--reports/lab7/lab7.pdfbin0 -> 54920 bytes
-rw-r--r--reports/lab7/lab7.tex89
14 files changed, 634 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index cb9c43c..8aa37f4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,18 @@
-target
.*
+
+# Rust
+target
+
+# LaTeX
+*.aux
+*.fls
+*.log
+*.out
+*.fdb_latexmk
+*.gz
+*.thm
+*.toc
+*.bbl
+*.blg
+*.md
+*.dvi
diff --git a/reports/lab1/lab1.pdf b/reports/lab1/lab1.pdf
new file mode 100644
index 0000000..f4f73f7
--- /dev/null
+++ b/reports/lab1/lab1.pdf
Binary files differ
diff --git a/reports/lab1/lab1.tex b/reports/lab1/lab1.tex
new file mode 100644
index 0000000..f7bd293
--- /dev/null
+++ b/reports/lab1/lab1.tex
@@ -0,0 +1,115 @@
+\documentclass[a4paper,oneside]{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T2A]{fontenc}
+\usepackage[english,russian]{babel}
+
+\usepackage{amsmath}
+\usepackage{mathtools}
+\usepackage{amsfonts}
+\usepackage{enumitem}
+\usepackage{amsthm}
+
+\newtheorem{theorem}{Теорема}[subsection]
+\newtheorem*{theorem*}{Теорема}
+
+% --- Определение --- %
+\theoremstyle{definition}
+\newtheorem{definition}{Определение}[subsection]
+\newtheorem*{definition*}{Определение}
+% ------------------- %
+
+\date{}
+
+
+\title{Криптографические методы защиты информации, Лабораторная работа №1}
+\author{Гущин Андрей, 431 группа, 1 подгруппа, 2 вариант}
+
+\begin{document}
+
+\maketitle
+
+\begin{definition*}
+ Группой называется пара $<G, \cdot>$, где $G$ – непустое множество, а
+ $\cdot$ – бинарная операция, удовлетворяющая следующим трём аксиомам:
+ \begin{enumerate}
+ \item Ассоциативность
+ \item Существование единичного (нейтрального) элемента
+ \item Существование обратного элемента
+ \end{enumerate}
+\end{definition*}
+
+Поле является алгебраической структурой с двумя бинарными операциями
+– операцией сложения и операцией умножения. Поскольку, для элементов
+поля по каждой из этих операций существует обратный элемент, то в поле
+определены 4 арифметических операции – сложение, вычитание, умножение
+и деление.
+
+Простейшее поле состоит ровно из p элементов, где $p$-произвольное простое
+число, включая $p = 2$:
+\begin{equation*}
+ F_p = \{ 0, 1, 2, \dots, p - 1 \}
+\end{equation*}
+
+Полем называется алгебраическая структура $<F, +, \cdot>$, состоящая
+из непустого множества и двух бинарных операция. Поле является группой
+по сложению и группой по умножению (обратный элемент по умножению
+рассматривается для ненулевых элементов), связанных аксиомами дистрибутивности $(\forall a, b, c \in F)$.
+
+*Определение*. Порядком элемента $a$ группы $G$ (обозначается
+$ord_G(a)$) называется наименьшее число $k$ такое, что $a^k =
+1$. Порядком группы называется число ее элементов.
+
+Порядком (по умножению) ненулевого элемента $a$ поля $F_p$ называется
+наименьшая степень $t$ такая, что выполняется условие
+\begin{equation*}
+ a^t \pmod p = 1
+\end{equation*}
+
+\begin{theorem*}[Лагранжа]
+ Порядок любого элемента конечной группы является делителем порядка
+ группы.
+\end{theorem*}
+
+Элемент $a \in G$ называется \textit{примитивным} элементом или
+генератором группы, если его порядок $ord_G(a)$ равен порядку
+группы. Не любая группа имеет генератор. Группа, в которой есть
+генератор, порождается одним элементом и называется циклической.
+
+Проверим, что 2 является порождающим элементом простого конечного поля
+$F_{29}$
+\begin{align*}
+ 2^{1} &= 2 \pmod {29} = 2 \\
+ 2^{2} &= 2 \cdot 2 \pmod {29} = 4 \\
+ 2^{3} &= 4 \cdot 2 \pmod {29} = 8 \\
+ 2^{4} &= 8 \cdot 2 \pmod {29} = 16 \\
+ 2^{5} &= 16 \cdot 2 \pmod {29} = 3 \\
+ 2^{6} &= 3 \cdot 2 \pmod {29} = 6 \\
+ 2^{7} &= 6 \cdot 2 \pmod {29} = 12 \\
+ 2^{8} &= 12 \cdot 2 \pmod {29} = 24 \\
+ 2^{9} &= 24 \cdot 2 \pmod {29} = 19 \\
+ 2^{10} &= 19 \cdot 2 \pmod {29} = 9 \\
+ 2^{11} &= 9 \cdot 2 \pmod {29} = 18 \\
+ 2^{12} &= 18 \cdot 2 \pmod {29} = 7 \\
+ 2^{13} &= 7 \cdot 2 \pmod {29} = 14 \\
+ 2^{14} &= 14 \cdot 2 \pmod {29} = 28 \\
+ 2^{15} &= 28 \cdot 2 \pmod {29} = 27 \\
+ 2^{16} &= 27 \cdot 2 \pmod {29} = 25 \\
+ 2^{17} &= 25 \cdot 2 \pmod {29} = 21 \\
+ 2^{18} &= 21 \cdot 2 \pmod {29} = 13 \\
+ 2^{19} &= 13 \cdot 2 \pmod {29} = 26 \\
+ 2^{20} &= 26 \cdot 2 \pmod {29} = 23 \\
+ 2^{21} &= 23 \cdot 2 \pmod {29} = 17 \\
+ 2^{22} &= 17 \cdot 2 \pmod {29} = 5 \\
+ 2^{23} &= 5 \cdot 2 \pmod {29} = 10 \\
+ 2^{24} &= 10 \cdot 2 \pmod {29} = 20 \\
+ 2^{25} &= 20 \cdot 2 \pmod {29} = 11 \\
+ 2^{26} &= 11 \cdot 2 \pmod {29} = 22 \\
+ 2^{27} &= 22 \cdot 2 \pmod {29} = 15 \\
+ 2^{28} &= 15 \cdot 2 \pmod {29} = 1
+\end{align*}
+
+Порядок элемента 2 в поле $F_{29}$ равно 28 (то есть $p - 1$), таким
+образом число 2 является порождающим элементом конечного поля
+$F_{29}$.
+\end{document}
diff --git a/reports/lab3/lab3.pdf b/reports/lab3/lab3.pdf
new file mode 100644
index 0000000..f37bbc1
--- /dev/null
+++ b/reports/lab3/lab3.pdf
Binary files differ
diff --git a/reports/lab3/lab3.tex b/reports/lab3/lab3.tex
new file mode 100644
index 0000000..46063aa
--- /dev/null
+++ b/reports/lab3/lab3.tex
@@ -0,0 +1,139 @@
+\documentclass[a4paper,oneside]{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T2A]{fontenc}
+\usepackage[english,russian]{babel}
+
+\usepackage{amsmath}
+\usepackage{mathtools}
+\usepackage{amsfonts}
+\usepackage{enumitem}
+\usepackage{amsthm}
+
+\newtheorem{theorem}{Теорема}[subsection]
+\newtheorem*{theorem*}{Теорема}
+
+% --- Определение --- %
+\theoremstyle{definition}
+\newtheorem{definition}{Определение}[subsection]
+\newtheorem*{definition*}{Определение}
+% ------------------- %
+
+\date{}
+
+
+\title{Криптографические методы защиты информации, Лабораторная работа №3}
+\author{Гущин Андрей, 431 группа, 1 подгруппа, 2 вариант}
+
+\begin{document}
+
+\maketitle
+
+Факторизацией натурального числа называется его разложение в произведение
+простых множителей. Существование и единственность (с точностью до порядка
+следования множителей) такого разложения следует из \textbf{основной теоремы
+арифметики}.
+
+Простой перебор множителей является довольно неэффективным алгоритмом,
+особенно для достаточно больших чисел. В таком случае необходимо выбрать другой
+алгоритм разложения на множители.
+
+Например, таким является алгоритм Шермана Лемана.
+
+Пусть $n$ нечётно и $n > 8$.
+\begin{enumerate}
+ \item
+ Для $a = 2, 3, \dots, \lfloor n^{1/3} \rfloor$ проверить условие
+ $a | n$. Если на этом шаге не удалось разложить $n$ на множители,
+ то переходим к следующему шагу.
+
+ \item
+ Если на предыдущем шаге делитель не найден и $n$ --- составное, то $n =
+ pq$, где $p, q$ --- простые числа, и $n^{1/3} < p \leq q < n^{2/3}$.
+ Тогда для всех $k = 1, 2, \dots, \lfloor n^{1/3} \rfloor$ и для всех
+ $d = 0, \dots, \left\lfloor \frac{n^{1/6}}{4 \sqrt{k}} \right\rfloor + 1$
+ проверить, является ли число $(\lfloor \sqrt{4kn} \rfloor + d)^2 - 4kn$
+ квадратом натурального числа. Если является, то для $A = \lfloor \sqrt{4kn} \rfloor + d$ и
+ $B = \sqrt{A^2 - 4kn}$ выполнено сравнение:
+ \[ A^2 \equiv B^2 \pmod n \text{ или } (A - B)(A + B) \equiv 0 \pmod n \]
+
+ В этом случае для $d^* = \gcd(A - B, n)$ проверяется неравенство
+ $1 < d^* < n$. Если оно выполнено, то $n = d^* \cdot (n / d^*)$ --- разложение $n$ на два множителя.
+
+ Если алгоритм не нашёл разложение $n$ на два множителя, то $n$ --- простое число.
+\end{enumerate}
+
+Можно заметить, что данный алгоритм имеет временную сложность $O(n^{1/3})$,
+что является более эффективным результатом по сравнению с простым перебором
+множителей, который имеет временную сложность $O(n^{1/2})$.
+
+Рассмотрим алгоритм для $n_1 = 21894583143407671$. $\lfloor n_1^{1/3} \rfloor
+= \lfloor 21894583143407671^{1/3} \rfloor = \lfloor 279755.66757 \rfloor =
+279755$. Перебрав все простые числа $a = 2, 3, \dots, 279755$ и проверив
+для каждого $(n_1 | a)$, я заметил, что ни одно из них не является простым
+множителем числа 21894583143407671. Таким образом, переходим ко второму шагу
+алгоритма.
+
+Снова будем перебирать все числа $k = 1, 2, 3, \dots, 279755$ и для каждого $k$
+вычислим значение $\left\lfloor \frac{n_1^{1/6}}{4 \sqrt{k}} \right\rfloor +
+1 = \left\lfloor \frac{21894583143407671^{1/6}}{4 \cdot \sqrt{k}} \right\rfloor
++ 1 = \left\lfloor \frac{528.91934}{4 \cdot \sqrt{k}} \right\rfloor + 1$.
+
+Далее необходимо перебрать все $d = 0, \dots, \left\lfloor \frac{n_1^{1/6}}{4
+\sqrt{k}} \right\rfloor + 1$.
+
+Пусть $k = 1$, $d_{max} = \left\lfloor \frac{528.91934}{4 \cdot \sqrt{1}}
+\right\rfloor = \left\lfloor \frac{528.91934}{4} \right\rfloor =
+\left\lfloor 132.22983 \right\rfloor = 132$
+
+Для каждого $d = 0, \dots, 132$ необходимо проверить является ли число
+$(\lfloor \sqrt{4kn} \rfloor + d)^2 - 4kn$ полным квадратом натурального числа.
+
+Для $k = 1, d = 0$ это число равно $(\lfloor \sqrt{4 \cdot 1 \cdot
+21894583143407671} \rfloor + 0)^2 - 4 \cdot 1 \cdot 21894583143407671 =
+(\lfloor \sqrt{4 \cdot 1 \cdot 21894583143407671} \rfloor + 0)^2 - 4 \cdot 1
+\cdot 21894583143407671 = (\lfloor 295936365.75053 \rfloor)^2 -
+87578332573630688 = 295936365^2 - 87578332573630688 = -444217463$.
+
+Отрицательное число не может быть квадратом натурального числа, поэтому
+продолжаем перебор.
+
+$\dots$
+
+Пусть $k = 26304$, $d_{max} = \left\lfloor \frac{528.91934}{4 \cdot \sqrt{26304}}
+\right\rfloor = \left\lfloor \frac{528.91934}{162.18508} \right\rfloor =
+\left\lfloor 3.26121 \right\rfloor = 3$
+
+$\dots$
+
+Для $k = 26304, d = 1$ это число равно $(\lfloor \sqrt{4 \cdot 26304 \cdot
+21894583143407671} \rfloor + 1)^2 - 4 \cdot 26304 \cdot 21894583143407671 =
+(\lfloor \sqrt{2303660460016781511936} \rfloor + 1)^2 - 2303660460016781511936
+= (\lfloor 47996462994.858086 \rfloor + 1)^2 - 2303660460016781511936 =
+47996462995^2 - 2303660460016781511936 =
+2303660460030404370025 - 2303660460016781511936 = 13622858089$.
+
+Число 13622858089 является полным квадратом числа 116717.
+
+Вычислим $A = \lfloor \sqrt{4 * k * n} \rfloor + d$ и $B = \sqrt{A^2 - 4kn}$:
+
+$A = \lfloor \sqrt{4 \cdot 26304 \cdot 21894583143407671} \rfloor + 1 =
+47996462995$.
+
+$B = \sqrt{47996462995^2 - 4 \cdot 26304 \cdot 21894583143407671} = 116717$.
+
+Выполним сравнение $A^2 \equiv B^2 \pmod n$.
+
+$47996462995^2 \equiv 116717^2 \pmod {21894583143407671} =
+2303660460030404370025 \equiv 13622858089 \pmod {21894583143407671} =
+13622858089 \equiv 13622858089 \pmod {21894583143407671}$.
+
+Так как это выражение верно, вычислим $d^* = \gcd(A - B, n) =
+\gcd(47996462995 - 116717, 21894583143407671) =
+\gcd(47996346278, 21894583143407671) = 175169147$
+
+Для данного $d^*$ выполняется равенство $1 < d^* < n$, значит это число является
+множителем числа $n$, а вторым множителем является число $n / d^* = 124991093$.
+
+
+\end{document}
diff --git a/reports/lab4/Makefile b/reports/lab4/Makefile
new file mode 100644
index 0000000..0378519
--- /dev/null
+++ b/reports/lab4/Makefile
@@ -0,0 +1,17 @@
+.PHONY: clean all
+
+all:
+ @echo "Использование:"
+ @echo "make entr -> Запуск entr, пересобирающий документ при изменениях"
+ @echo "make doc -> Пересобрать документ"
+ @echo "make clean -> Удаление сгенерированных файлов"
+
+entr:
+ sh -c "echo *.tex | entr latexmk -pdf -f -shell-escape -interaction=nonstopmode lab*.tex"
+
+doc:
+ latexmk -pdf -f -shell-escape -interaction=nonstopmode lab*.tex
+
+clean:
+ rm -rf _minted-* *.aux *.dvi *.fdb_latexmk *.fls *.log
+
diff --git a/reports/lab4/lab4.pdf b/reports/lab4/lab4.pdf
new file mode 100644
index 0000000..58bb498
--- /dev/null
+++ b/reports/lab4/lab4.pdf
Binary files differ
diff --git a/reports/lab4/lab4.tex b/reports/lab4/lab4.tex
new file mode 100644
index 0000000..65665bf
--- /dev/null
+++ b/reports/lab4/lab4.tex
@@ -0,0 +1,85 @@
+\documentclass[a4paper,oneside]{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T2A]{fontenc}
+\usepackage[english,russian]{babel}
+
+\usepackage{amsmath}
+\usepackage{mathtools}
+\usepackage{amsfonts}
+\usepackage{enumitem}
+\usepackage{amsthm}
+\usepackage{minted}
+\setminted{fontsize=\small, breaklines=true, style=emacs, linenos}
+\usepackage{graphicx}
+\graphicspath{ {./images/} }
+\usepackage{float}
+
+\newtheorem{theorem}{Теорема}
+\newtheorem*{theorem*}{Теорема}
+
+% --- Определение --- %
+\theoremstyle{definition}
+\newtheorem{definition}{Определение}
+\newtheorem*{definition*}{Определение}
+% ------------------- %
+
+\theoremstyle{definition}
+\newtheorem*{example}{Пример}
+
+
+\title{{Криптографические методы защиты информации}\\{Лабораторная работа №4}}
+\author{Гущин Андрей, 431 группа, 1 подгруппа, 2 вариант}
+\date{\the\year{} г.}
+
+\begin{document}
+\maketitle
+
+\begin{theorem}[Безу]
+ Остаток от деления многочлена $P(x)$ на двучлен $(x - a)$ равен $P(a)$.
+ \label{thm:bezout}
+\end{theorem}
+\begin{proof}
+ Поделим с остатком многочлен $P(x)$ на двучлен $x - a$:
+ \begin{equation*}
+ P(x)=(x - a) \cdot Q(x) + R(x)
+ \end{equation*}
+ где $R(x)$ --- остаток. Так как $\deg R(x) < \deg(x - a) = 1$, то $R(x)$
+ --- многочлен степени не выше 0, то есть константа, обозначим её за $r$.
+ Подставляя $x = a$, поскольку $(a-a) \cdot Q(a) = 0$, имеем $P(a) = R(x) = r$.
+\end{proof}
+
+\begin{theorem}
+ Многочлен степени $\leq 3$ неприводим над полем $F$ $\iff$ он не имеет корней
+ в поле $F$.
+ \label{thm:irreducibility}
+\end{theorem}
+\begin{proof}
+ Если многочлен $f$ неприводим над $F$, то по теореме \ref{thm:bezout} он не
+ имеет корней в поле $F$. Обратно, если $f$ приводим над $F$ и его степень 2
+ или 3, то он имеет линейный делитель над $F$, следовательно, он имеет корень в
+ $F$.
+\end{proof}
+
+% \begin{example}
+% % Пример с приводимым многочленом <= 3
+% \end{example}
+
+% \begin{example}
+% % Пример с неприводимым многочленом <= 3
+% \end{example}
+
+\begin{example}
+ Теорема \ref{thm:irreducibility} для многочленов степени $n \geq 4$ в общем
+ случае неверна. $x^4 + x^2 + 1$ не имеет корней в поле $F_{11}$, но имеет
+ разложение
+ \begin{align*}
+ (x^2 + x + 1) \cdot (x^2 + 10x + 1) &=
+ x^4 + 10x^3 + x^2 + x^3 + 10x^2 + x + x^2 + 10x + 1 = \\
+ &= x^4 + 11x^3 + 12x^2 + 11x + 1 = \\
+ &= x^4 + 0x^3 + 1x^2 + 0x + 1 = \\
+ &= x^4 + x^2 + 1
+ \end{align*}
+\end{example}
+
+\end{document}
diff --git a/reports/lab6/Makefile b/reports/lab6/Makefile
new file mode 100644
index 0000000..96b545c
--- /dev/null
+++ b/reports/lab6/Makefile
@@ -0,0 +1,12 @@
+.PHONY: clean all
+
+all:
+ @echo "Использование:"
+ @echo "make entr -> Запуск entr, пересобирающий документ пи изменениях"
+ @echo "make clean -> Удаление сгенерированных файлов"
+
+entr:
+ sh -c "echo *.tex | entr latexmk -pdf -f -shell-escape lab*.tex"
+
+clean:
+ rm -rf _minted-* *.aux *.dvi *.fdb_latexmk *.fls *.log *.pdf
diff --git a/reports/lab6/lab6.pdf b/reports/lab6/lab6.pdf
new file mode 100644
index 0000000..4723c56
--- /dev/null
+++ b/reports/lab6/lab6.pdf
Binary files differ
diff --git a/reports/lab6/lab6.tex b/reports/lab6/lab6.tex
new file mode 100644
index 0000000..9e0c78c
--- /dev/null
+++ b/reports/lab6/lab6.tex
@@ -0,0 +1,143 @@
+\documentclass[a4paper,oneside]{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T2A]{fontenc}
+\usepackage[english,russian]{babel}
+
+\usepackage{amsmath}
+\usepackage{mathtools}
+\usepackage{amsfonts}
+\usepackage{enumitem}
+\usepackage{amsthm}
+\usepackage{minted}
+\setminted{fontsize=\small, breaklines=true, style=emacs, linenos}
+\usepackage{graphicx}
+\graphicspath{ {./images/} }
+\usepackage{float}
+
+\newtheorem{theorem}{Теорема}
+\newtheorem*{theorem*}{Теорема}
+
+% --- Определение --- %
+\theoremstyle{definition}
+\newtheorem{definition}{Определение}
+\newtheorem*{definition*}{Определение}
+% ------------------- %
+
+\theoremstyle{definition}
+\newtheorem*{example}{Пример}
+
+
+\title{{Криптографические методы защиты информации}\\{Лабораторная работа №6}}
+\author{Гущин Андрей, 431 группа, 1 подгруппа, 2 вариант}
+\date{\the\year{} г.}
+
+\begin{document}
+
+\maketitle
+
+\begin{definition}
+ \textbf{Группа} --- непустое множество, на котором определена ассоциативная
+ бинарная операция, причём для этой операции имеется нейтральный элемент, и
+ каждый элемент множества имеет обратный.
+\end{definition}
+
+\begin{definition}
+ \textbf{Циклическая группа} --- группа $(G, \cdot)$, которая может быть
+ порождена одним элементом $a$, то есть все её элементы являются степенями
+ $a$. Обозначается как $G = \langle a \rangle$.
+\end{definition}
+
+\begin{definition}
+ \textbf{Подгруппа} --- подмножество $H$ группы $G$, которое является группой
+ относительно операции, определённой в $G$.
+\end{definition}
+
+\begin{theorem}
+ \label{thm:all_cycle}
+ Каждая подгруппа циклической группы является циклической.
+\end{theorem}
+\begin{proof}
+ Допустим, $G = \langle g \rangle = \{ g^k : k \in \mathbb{Z} \}$ ---
+ циклическая группа. Пусть $H$ --- подгруппа $G$. Если $H = \{ 1 \}$, то
+ $H$ --- циклическая. Положим, что $H$ --- нетривиальная подгруппа и пусть
+ $g^k \in H$, где $g^k \neq 1$. Тогда, так как $H$ является подгруппой,
+ $g^{-k} = (g^k)^{-1} \in H$. Получаем, что $H$ содержит положительную
+ степень числа $g$, отличную от 1. Возьмём минимальное положительное $m$
+ такое, что $g^m \in H$. Очевидно, что все степени $g^m$ также принадлежат
+ $H$, то есть $\langle g^m \rangle \subseteq H$.
+
+ Докажем, что это выражение является равенством. Пусть $g^k$ является
+ любым элементом $H$. Мы можем выразить $k = qm + r$, где $0 \leq r < m$.
+ Но $g^k = g^{qm + r} = g^{qm} g^r = (g^m)^q g^r$. Получаем
+ \begin{equation*}
+ g^r = (g^m)^{-q} g^k \in H
+ \end{equation*}
+
+ Так как $m$ --- минимальное положительное целое число такое, что $g^m \in
+ H$ и при этом $0 \leq r < m$, следует, что $r = 0$. Тогда,
+ $g^k = (g^m)^q \in \langle g^m \rangle$. Таким образом, мы показали, что
+ $H \subseteq \langle g^m \rangle \implies H = \langle g^m \rangle$.
+
+ Получаем, что $H$ --- цикличная с порождающим элементом $g^m$, где $m$ ---
+ минимальное положительное целое число, для которого справедливо $g^m \in H$.
+\end{proof}
+
+\begin{theorem}[Фундаментальная теорема конечных цикличных групп]
+ Пусть $G = \langle g \rangle$ --- цикличная группа порядка $n$. Тогда,
+ \begin{enumerate}
+ \item
+ Если $H$ --- подгруппа $G$, то $H = \langle g^d \rangle$ для
+ некоторого $d \mid n$.
+ \item Если $H$ --- подгруппа $G$ и $|H| = k$, то $k \mid n$.
+ \item
+ Если $k \mid n$, то $\langle g^{n/k} \rangle$ --- единственная
+ подгруппа $G$ порядка $k$.
+ \end{enumerate}
+\end{theorem}
+\begin{proof}
+ \begin{enumerate}
+ \item \label{thm:fund_1}
+ По Теореме \ref{thm:all_cycle}, $H$ --- циклическая группа.
+ Так как $|G| = n < \infty \implies H = \langle g^m \rangle$, где
+ $m > 0$. Пусть $d = \gcd(m, n)$. Так как $d \mid n$, достаточно
+ показать, что $H = \langle g^d \rangle$. Но $d \mid m$, поэтому
+ $m = qd$. Тогда $g^m = (g^d)^q \implies g^m \in \langle g^d \rangle$.
+ Таким образом, $H = \langle g^m \rangle \subseteq \langle g^d \rangle$.
+ Но $d = rm + sn$, где $r, s \in \mathbb{Z}$, поэтому
+ \begin{equation*}
+ g^d = g^{rm + sn} = g^{rm} g^{sn} = (g^m)^r (g^n)^s =
+ (g^m)^r (1)^s = (g^m)^r \in \langle g^m \rangle = H
+ \end{equation*}
+
+ Получаем, что $\langle g^d \rangle \subseteq H \implies
+ \langle g^d \rangle = H$.
+ \item
+ В следствие пункта \ref{thm:fund_1}, $H = \langle g^d \rangle$,
+ где $d \mid n$. Тогда $k = |H| = n / d$. Получаем, что $k \mid n$.
+ \item
+ Допустим $K$ --- подгруппа $G$ порядка $k$. По пункту \ref{thm:fund_1},
+ пусть $K = \langle g^m \rangle$, где $m \mid n$. $k = |K| = |g^m|
+ = n/m$. Получаем $m = n/k \implies K = \langle g^{n/k} \rangle$.
+ \end{enumerate}
+\end{proof}
+
+\begin{example}
+ Пусть $G = \mathbb{Z}_6 = \{ 0, 1, 2, 3, 4, 5 \}$ --- кольцо вычетов по
+ модулю 6. Вычислим все подгруппы, беря каждый из элементов как порождающий.
+ \begin{align*}
+ H_0 &= \{ 0 \} \\
+ H_1 &= \{ 0, 1, 2, 3, 4, 5 \} = G \\
+ H_2 &= \{ 0, 2, 4 \} \\
+ H_3 &= \{ 0, 3 \} \\
+ H_4 &= \{ 0, 2, 4 \} = H_2 \\
+ H_5 &= \{ 0, 1, 2, 3, 4, 5 \} = H_1 = G
+ \end{align*}
+
+ Делителями числа 6 являются $\{ 1, 2, 3, 6 \}$. Можно заметить, что для
+ каждого из делителей существует единственная уникальная подгруппа
+ соответствующего порядка (для 1 --- $\langle 0 \rangle$, для 2 ---
+ $\langle 3 \rangle$, для 3 --- $\langle 2 \rangle$, для 6 --- $G$).
+\end{example}
+
+\end{document}
diff --git a/reports/lab7/Makefile b/reports/lab7/Makefile
new file mode 100644
index 0000000..0378519
--- /dev/null
+++ b/reports/lab7/Makefile
@@ -0,0 +1,17 @@
+.PHONY: clean all
+
+all:
+ @echo "Использование:"
+ @echo "make entr -> Запуск entr, пересобирающий документ при изменениях"
+ @echo "make doc -> Пересобрать документ"
+ @echo "make clean -> Удаление сгенерированных файлов"
+
+entr:
+ sh -c "echo *.tex | entr latexmk -pdf -f -shell-escape -interaction=nonstopmode lab*.tex"
+
+doc:
+ latexmk -pdf -f -shell-escape -interaction=nonstopmode lab*.tex
+
+clean:
+ rm -rf _minted-* *.aux *.dvi *.fdb_latexmk *.fls *.log
+
diff --git a/reports/lab7/lab7.pdf b/reports/lab7/lab7.pdf
new file mode 100644
index 0000000..46d2d54
--- /dev/null
+++ b/reports/lab7/lab7.pdf
Binary files differ
diff --git a/reports/lab7/lab7.tex b/reports/lab7/lab7.tex
new file mode 100644
index 0000000..07750de
--- /dev/null
+++ b/reports/lab7/lab7.tex
@@ -0,0 +1,89 @@
+\documentclass[a4paper,oneside]{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T2A]{fontenc}
+\usepackage[english,russian]{babel}
+
+\usepackage{amsmath}
+\usepackage{mathtools}
+\usepackage{amsfonts}
+\usepackage{enumitem}
+\usepackage{amsthm}
+\usepackage{minted}
+\setminted{fontsize=\small, breaklines=true, style=emacs, linenos}
+\usepackage{graphicx}
+\graphicspath{ {./images/} }
+\usepackage{float}
+\usepackage{verse}
+
+\newtheorem{theorem}{Теорема}
+\newtheorem*{theorem*}{Теорема}
+
+% --- Определение --- %
+\theoremstyle{definition}
+\newtheorem{definition}{Определение}
+\newtheorem*{definition*}{Определение}
+% ------------------- %
+
+\theoremstyle{definition}
+\newtheorem*{example}{Пример}
+
+
+\title{{Криптографические методы защиты информации}\\{Лабораторная работа №7}}
+\author{Гущин Андрей, 431 группа, 1 подгруппа, 2 вариант}
+\date{\the\year{} г.}
+
+\begin{document}
+
+\maketitle
+
+Указанные в задании строки относятся к десятой главе романа <<Евгений Онегин>>
+Александра Пушкина. Данная глава была зашифрована Пушкиным из-за своего
+содержания, которое могло бы привести поэта к проблемам с законом.
+
+В 1910 году Пётр Осипович Морозов смог расшифровать отрывки десятой главы.
+Благодаря тому, что он заметил сходство некоторых строк:
+\begin{verse}
+ Сей всадникъ Папою венчанный \\
+ Изчѳзнувшій какъ тень зари \\
+ Сей мужъ судьбы, сей странникъ бранный \\
+ Прѳдъ кемъ унизились цари
+\end{verse}
+
+Cо строками четверостишия из стиха <<Герой>> авторства Пушкина:
+\begin{verse}
+ Всё он, всё он --- пришлец сей бранный, \\
+ Пред кем смирилися цари, \\
+ Сей ратник, вольностью венчанный, \\
+ Исчезнувший, как тень зари.
+\end{verse}
+
+Таким образом, он смог получить ключ для перестановки строк из зашифрованного
+текста. Если последовательно пронумеровать строки исходного текста и переставить
+их так, что сформируется осмысленное четверостишие, получится ключ (35, 51, 8, 23).
+
+Таким образом первым расшифрованным четверостишием будет (28, 44, 1, 17),
+вторым --- (29, 45, 2, 18) и так далее. При применении данного алгоритма,
+четверостишия после пятого снова начинают терять смысл. Для этого случая
+и последующих достаточно пропустить одну или две строки в зависимости от
+получающегося смысла.
+
+Получаем следующие четверостишия:
+\begin{verse}
+ Властитель слабый и лукавый, \\
+ Плешивый щеголь, враг труда, \\
+ Нечаянно пригретый славой, \\
+ Над нами царствовал тогда. \\!
+
+ Его мы очень смирным знали, \\
+ Когда не наши повара \\
+ Орла двуглавого щипали \\
+ У Бонапартова шатра. \\!
+
+ Гроза двенадцатого года \\
+ Настала — кто тут нам помог? \\
+ Остервенение народа, \\
+ Барклай, зима иль русский бог?
+\end{verse}
+
+\end{document}