Шифр Цезаря в мат описании

This commit is contained in:
2024-11-19 18:51:23 +03:00
parent 1d7ceb8fc9
commit 8c75ccf7ef

View File

@@ -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}