Файл: Технологии программирования. Методы кодирования данных ..pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

Просмотров: 102

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

– алгоритмы, которые основаны на использовании сложных математических вычислений исходных текстов по определенной формуле. Многие из таких алгоритмов используют в процессе решения нерешенных математических задач. Например, в алгоритме шифрования RSA используются свойства простых чисел;

– комбинированные методы предполагают использование последовательного шифрования исходных текстов с помощью нескольких методов шифрования.

В современных системах управления базами данных поддерживается один из двух наиболее подходов к обеспечению безопасности данных: обязательный подход и избирательный подход. В обоих подходах единицей данных, для которых должна быть создана система безопасности, может быть как вся база данных целиком, так и любой объект внутри базы данных [12]. Вид незашифрованного файла базы данных SQLite представлен на рис. 5. Вид зашифрованного файла базы данных SQLite представлен на рис. 6.

Рисунок 5 – Вид незашифрованного файла

Обязательный и избирательный подходы отличаются своими свойствами. В случае избирательного управления некоторый пользователь обладает различными правами при работе с данными объектами. Разные пользователи могут обладать разными правами доступа к одному и тому же объекту. Избирательные права характеризуются значительной гибкостью.

Рисунок 6 – Вид зашифрованного файла

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

Шифр Цезаря, также известный как шифр сдвига, код Цезаря или сдвиг Цезаря – один из самых простых и наиболее широко известных методов шифрования.

Шифр Цезаря – это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите. Например, в шифре со сдвигом вправо на 3, А была бы заменена на Г, Б станет Д, и так далее.

Шифр назван в честь римского полководца Гая Юлия Цезаря, использовавшего его для секретной переписки со своими генералами.

Шаг шифрования, выполняемый шифром Цезаря, часто включается как часть более сложных схем, таких как шифр Виженера, и всё ещё имеет современное приложение в системе ROT13 [18]. Как и все моноалфавитные шифры, шифр Цезаря легко взламывается и не имеет почти никакого применения на практике.


Шифр Цезаря со сдвигом на 3:

– A заменяется на D;

– B заменяется на E;

– и так далее;

– Z заменяется на C [14].

Схематическое представление шифра Цезаря представлено на следующем рис. 7.

Рисунок 7 – Шифр Цезаря со сдвигом на 3

Математическая модель шифра Цезаря заключается в следующих положениях.

Если сопоставить каждому символу алфавита его порядковый номер (нумеруя с 0), то шифрование и дешифрование можно выразить формулами модульной арифметики:

y=(x+k) mod n

x=(y-k) mod n,

где x – символ открытого текста,

y – символ шифрованного текста,

n – мощность алфавита,

k – ключ.

С точки зрения математики шифр Цезаря является частным случаем аффинного шифра.

В качестве примера реализации шифра Цезаря можно привести пару задач.

Используя русский алфавит из 33 букв, зашифруйте сообщение классическим шифром Цезаря со сдвигом на пять (пробелы между словами не используются). Сообщение ПЛАТФОРМАПЯТЬ.

Для шифрования сообщения классическим шифром Цезаря со сдвигом пять составим таблицу шифрования, рис. 8. При помощи которой можно быстро зашифровать необходимое сообщение, например, для шифрования буквы П, воспользовавшись таблицей получим Ф; для шифрования буквы Л, воспользовавшись таблицей получим Р и т.д.

А

Б

В

Г

Д

Е

Ё

Ж

З

И

Й

К

Л

М

Н

О

П

Р

С

Т

У

Ф

Х

Ц

Ч

Ш

Щ

Ы

Ь

Ъ

Э

Ю

Я

Е

Ё

Ж

З

И

Й

К

Л

М

Н

О

П

Р

С

Т

У

Ф

Х

Ц

Ч

Ш

Щ

Ы

Ь

Ъ

Э

Ю

Я

А

Б

В

Г

Д


Рисунок 8 – Таблица шифрозамен для шифра Цезаря

В результате получим:

ПЛАТФОРМАПЯТЬ (платформа пять)

ФРЕЧЩУХСЕФДЧА

Используя русский алфавит из 33 букв, дешифруйте сообщение, зашифрованное классическим шифром Цезаря. Сообщение НЦУФСЖЛРНЖЕЦП

Для дешифрования сообщения была использована таблица шифрования Цезаря со сдвигом три, рис. 9. При помощи которой можно быстро дешифровать необходимое сообщение, например, для дешифрования буквы Н, воспользовавшить таблицей получим К; для дешифрования буквы Л, воспользовавшить таблицей получим И и т.д. Только, необходимые буквы для дешифрования смотрим во второй строке, а аналог в первой.

А

Б

В

Г

Д

Е

Ё

Ж

З

И

Й

К

Л

М

Н

О

П

Р

С

Т

У

Ф

Х

Ц

Ч

Ш

Щ

Ы

Ь

Ъ

Э

Ю

Я

Г

Д

Е

Ё

Ж

З

И

Й

К

Л

М

Н

О

П

Р

С

Т

У

Ф

Х

Ц

Ч

Ш

Щ

Ы

Ь

Ъ

Э

Ю

Я

А

Б

В

Рисунок 9 – Таблица шифрозамен для шифра Цезаря

В результате получим:

НЦУФСЖЛРНЖЕЦП

КУРСОДИНКДВУМ (курс один к двум)

Таким образом, была дана характеристика шифру Цезаря и представлены несколько примеров шифрования данным алгоритмом шифрования.

2. Практическая часть


2.1. Постановка задачи

В рамках выполнения практической части данной работы необходимо разработать программу, реализующую шифр Цезаря. Для разработки программной системы необходимо использовать средства языка программирования С++.

2.2. Алгоритмизация программы

Рассмотрим основные алгоритмические решения используемые для реализации шифра Цезаря средствами языка программирования С++. Исходный код программы представлен в Приложении.

Для обеспечения работоспособности программы подключили необходимые библиотеки

#include "stdafx.h"

#include "iostream"

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <locale.h>

#include <string.h>

#include <Windows.h>

using namespace std;

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

// Функция производит шифровку используя шифр Цезаря

char encryption(char letter, int key);

// Функция производит ltшифровку используя шифр Цезаря

char disencryption(char letter, int key);

// Функция проверяет является ли буква прописной

int isUpper(char letter);

// Функция проверяет является ли буква строчной

int isLower(char letter);

Функция шифрования данных шифром Цезаря имеет следующий вид, представленный далее

char encryption(char letter, int key)

{

if (isUpper(letter))

{

letter += key;

if ((int)letter > 90)

{

key = letter - 90;

letter = 65 + key - 1;

}

}

if (isLower(letter))

{

letter += key;

if ((int)letter > 122)

{

key = letter - 122;

letter = 97 + key - 1;

}

}

return letter;

}

Таким образом, были представлены основные алгоритмические решения, позволяющие реализовать шифр Цезаря средствами языка программирования С++.

2.3. Описание порядка работы с программой

Работа с программной системой выполняется по средствам инициализации исполняемого файла program.exe. После запуска программы пользователю нужно ввести текст, который следует зашифровать, как это представлено на рис. 10.

Рисунок 10 – Ввод текста шифрования

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


Рисунок 11 – Ввод числа сдвигов букв

После чего, программа обработает текст и выведет сообщение с зашифрованным текстом. Результат выполнения программы будет представлен на рис. 12.

Рисунок 12 – Вывод зашифрованного текста

Также, разработанная программная система позволяет выполнить расшифровку зашифрованного текста. Для этого нужно подтвердить свое согласие на расшифровку сообщение, как это показано на рис. 13. В результате будет выведено исходное сообщение.

Рисунок 13 – Ввод числа сдвигов букв

Таким образом, была разработана программная система, позволяющая шифровать текст шифром Цезаря и расшифровывать зашифрованный текст средствами языка программирования С++.

Заключение

В процессе выполнения данной работы были получены следующие результаты. Установлено, что кодирование – способ представления информации в удобном для хранения и передачи виде. По своей сути кодовые системы (или просто коды) аналогичны шифрам однозначной замены, в которых элементам кодируемой информации соответствуют кодовые обозначения. Отличие заключается в том, что в шифрах присутствует переменная часть (ключ), которая для определенного исходного сообщения при одном и том же алгоритме шифрования может выдавать разные шифртексты.

Существуют два классических метода эффективного кодирования: метод Шеннона-Фано и метод Хаффмена. Входными данными для обоих методов является заданное множество исходных символов для кодирования с их частотами; результат - эффективные коды.

Среди популярных схем кодирования, которые применяются в локальных сетях можно выделить: манчестерское кодирование; дифференциальное манчестерское кодирование; AMI/ABP; PAM 5 и др.

Кодирование текстовых данных осущеставляется, например, на базе ANСII, Unicode кодировке.

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

В качестве демонстрации возможностей кодирования данных была выбран шифр Цезаря.

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