From 8c75ccf7ef8cffae1403be00a37bff50bab31cc9 Mon Sep 17 00:00:00 2001 From: Arity-T Date: Tue, 19 Nov 2024 18:51:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A8=D0=B8=D1=84=D1=80=20=D0=A6=D0=B5=D0=B7?= =?UTF-8?q?=D0=B0=D1=80=D1=8F=20=D0=B2=20=D0=BC=D0=B0=D1=82=20=D0=BE=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab3/report/report.tex | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/lab3/report/report.tex b/lab3/report/report.tex index 0d93abf..c425c5e 100644 --- a/lab3/report/report.tex +++ b/lab3/report/report.tex @@ -168,6 +168,26 @@ Для выполнения лабораторной работы необходимо было сделать следующее. Создать проект в stack. Все чистые функции записать в библиотеку Lib.hs и ограничить доступ к вспомогательным функциям. Использовать do-нотацию для работы с внешними файлами. Найти портрет Дэвида Дойча. Перевести изображение в формат .bmp (24-разрядный). Сохранить в файл формата .txt фрагмент биографии (не менее 1000 символов без пробелов, текст не должен обрываться на середине слова или предложения). Закодировать текст в изображение шифром Цезаря (смещение задается пользователем). Ключ к шифру записывается в имя файла. Написать функцию расшифровывающую текст из изображения используя ключ из имени файла и сохраняющую результат в отдельный текстовый файл. Создать функции шифрующие текст в последний бит каждого байта, последние два бита каждого байта, …, все биты в байте. В отчете привести примеры искажений изображения. + + \newpage + \section {Математическое описание} + \subsection{Шифр Цезаря} + Шифр Цезаря (лат. Notae Caesarianae), также известный как шифр сдвига или код Цезаря — разновидность шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите (так, в шифре со сдвигом вправо на 3, А была бы заменена на Г, Б станет Д, и так далее). Шифр был назван в честь римского полководца Гая Юлия Цезаря, использовавшего его для секретной переписки со своими военачальниками. + + Если сопоставить каждому символу алфавита его порядковый номер (нумеруя с 0), то шифрование и дешифрование можно выразить формулами модульной арифметики~\cite{caesar}: + \[ + y = (x + k) \mod n + \] + \[ + x = (y - k) \mod n + \] + где: \\ + $x$ — символ открытого текста, \\ + $y$ — символ шифрованного текста, \\ + $n$ — мощность алфавита, \\ + $k$ — ключ. + + \newpage \section {Особенности реализации} \subsection{Исходное изображение и текст} @@ -204,11 +224,11 @@ \vspace{-1.5cm} \begin{thebibliography}{0} + \bibitem{caesar} + Luciano, D., Prichett, G., Cryptology: From Caesar Ciphers to Public-Key Cryptosystems, The College Mathematics Journal, 1987. \bibitem{david} David Deutsch -- personal website, URL: \url{https://www.daviddeutsch.org.uk/}, Дата обращения: 19.11.2024 \bibitem{convertio} Convertio -- BPM to JPG online converter, URL: \url{https://convertio.co/ru/bmp-jpg/}, Дата обращения: 19.11.2024 \end{thebibliography} - - \end{document} \ No newline at end of file