- •1 Выполнение задачи №1 «Сложение синусоидальных сигналов со сдвигом фаз. Теорема косинусов»
- •3. Выполнение задания №3 «Получение периодической последовательности прямоугольных импульсов суммированием гармоник. Построение амплитудного спектра»
- •4 Выполнение задания №4 «Генерация случайного двоичного массива и его визуализация на оси времени»
- •5 Выполнение задания №5 «Моделирование ам, чм и фм модуляторов и наложение шума»
- •6 Выполнение задания №6 «Применение многопозиционных сигналов»
- •7 Выполнение задания №7 «Шифрование текстового файла алгоритмом с симметричным ключом»
7 Выполнение задания №7 «Шифрование текстового файла алгоритмом с симметричным ключом»
Шифрование — это преобразование данных в вид, недоступный для чтения без соответствующей информации (ключа шифрования).
Создадим текстовый файл при помощи блокнота, запишем в него текст «мама мыла раму» и сохраним его на диске в формате Юникод, назначив имя «shifr».
Далее считаем наш файл в MathCAD командой READBIN (Рисунок 7.1):
Рисунок 7.1 – применение команды READBIN
Теперь преобразуем десятичные значения байтов всех символов в единый двоичный массив. Для этого напишем программу перевода десятичного числа в двоичное (Рисунок 7.2) и программу перевода массива десятичных чисел в массив двоичных (Рисунок 7.3):
Рисунок 7.2 - программу перевода десятичного числа в двоичное
Рисунок 7.3 - программу перевода массива десятичных чисел в массив двоичных
Теперь, когда у нас есть двоичный массив, нужно создать ключ длиной 4 элемента и зашифровать им двоичную последовательность.
Ключ у нас будет вот такого вида (Рисунок 7.4):
Рисунок 7.4 – ключ шифрования
Для того чтобы зашифровать двоичную последовательность нашим ключом, нужно создать программу, которая будет сравнивать каждые 4 элемента двоичного массива с ключом при помощи функции xor, которая работает по правилу (Рисунок 7.5):
Рисунок 7.5 – таблица истинности для строгой дизъюнкции
И так, напишем программу, которая зашифрует двоичную последовательность (Рисунок 7.6):
Рисунок 7.6 – программа шифрования двоичной последовательности
Теперь преобразуем зашифрованную двоичную последовательность в десятичные значения, учитывая формат представления (uint 16- два байта).
Для этого необходимо написать программу перевода двоичного числа в десятичное (Рисунок 7.7):
Рисунок 7.7 - программа перевода двоичного числа в десятичное
Далее напишем программу перевода массива двоичных чисел в массив десятичных (Рисунок 7.8):
Рисунок 7.8 - программа перевода массива двоичных чисел в массив десятичных
Теперь, когда у нас есть десятичный массив, мы можем преобразовать вектор десятичных чисел в строковые символы командой vec2str (Рисунок 7.9):
Рисунок 7.9 – применение команды vec2str
Далее запишем зашифрованный файл на диск командой WRITEBIN (Рисунок 7.10):
Рисунок 7.10 – применение команды WRITEBIN
Откроем файл «secret», который мы записали на диск (Рисунок 7.11):
Рисунок 7.11 – открытый файл «secret»
Теперь расшифруем наше сообщение, для этого нужно повторить все те действия что мы делали до этого:
-
Считаем файл «secret» в Mathcad при помощи команды READBIN;
-
Преобразовываем десятичные значения байтов всех символов в единый двоичный массив;
-
Только теперь уже не шифруем, а расшифровываем двоичную последовательность, применив тот же ключ, которым мы шифровали;
-
Преобразовываем расшифрованную последовательность в десятичные значения, учитывая формат представления;
-
Преобразовываем вектор десятичных чисел в строковые символы командой vec2str (Рисунок 7.12).
Рисунок 7.12 – применение команды vec2str
И вот мы уже видим расшифрованное сообщение.
-
Осталось только записать расшифрованных файл на диск командой WRITEBIN (Рисунок 7.13):
Рисунок 7.13 – применение команды WRITEBIN
Откроем файл «nesecret» и посмотрим, что в нём написано (Рисунок 7.14):
Рисунок 7.14 – открытый файл «nesecret»
А в нём храниться наше расшифрованное сообщение.
Вывод: в данной работе я обучился шифрованию текстового файла алгоритмом с симметричным ключом в среде Mathcad. Увидел как он работает на практике.