Файл: Контрольная работа 1 Москва 2023 Задание 1. Алгоритм шифрования гост 2814789.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.02.2024
Просмотров: 9
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
Московский технический университет связи и информатики
Кафедра информационной безопасности
Основы информационной безопасности
Контрольная работа №1
Москва 2023
Задание №1.
Алгоритм шифрования ГОСТ 28147-89.
Выполните первый цикл алгоритма шифрования ГОСТ 28147 89 в режиме простой замены. Для получения 64 бит исходного текста используйте 8 первых букв из своих данных: Фамилии Имени Отчества. Для получения ключа (256 бит) используют текст, состоящий из 32 букв. Первый подключ содержит первые 4 буквы.
Решение
Исходные данные для зашифрования: СОЛОСЕНК
Для ключа возьмем последовательность, состоящую из 4 букв отчества:
СЕРГеевич
Для первого подключа X используем первые 4 буквы ключа: СЕРГ
Переведем исходный текст и первый подключ в двоичную последовательность:
Исходный текст:
С – 11010001
О – 11001110
Л – 11001011
О – 11001110
С – 11010001
Е – 11000101
Н – 11001101
К – 11001010
Первый подключ X0:
С – 11010001
Е – 11000101
Р – 11010000
Г – 11000011
Таким образом, первые 64 бита определяют входную последовательность:
L0: | 11010001 | 11001110 | 11001011 | 11001110 |
R0: | 11010001 | 11000101 | 11001101 | 11001010 |
Следующие 32 бита определяют первый подключ:
X0: | 11010001 | 11000101 | 11010000 | 11000011 |
-
Найдем значение функции преобразования f(R0, X0)
-
Вычисление суммы R0 и X0 по mod
R0: | 11010001 | 11000101 | 11001101 | 11001010 |
X0: | 11010001 | 11000101 | 11010000 | 11000011 |
R0+X0 | 10100010 | 10001010 | 10011101 | 10001101 |
-
Преобразование в блоке подстановки
Результат суммирования R0+X0 по mod
R0+X0 | 10100010 | 10001010 | 10011101 | 10001101 |
Преобразуем в блоке подстановки. Для каждого 4-битного блока вычислим его адрес в таблице подстановки. Номер блока соответствует номер столбца, десятичное значение блока соответствует номеру строки в таблице.
Номер блоков:
8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
1010 | 0010 | 1000 | 1010 | 1001 | 1101 | 1000 | 1101 |
Соответствующие номера строк в таблице подстановки:
10 | 2 | 8 | 10 | 9 | 13 | 8 | 13 |
Заполнение:
3 | 4 | 3 | 9 | 4 | 0 | 2 | 15 |
Результат:
0011 | 0100 | 0011 | 1001 | 0100 | 0000 | 0010 | 1111 |
-
Циклический сдвиг результата на 11 бит влево
1100 | 1010 | 0000 | 0001 | 0111 | 1001 | 1010 | 0001 |
Таким образом, нашли значение функции f (R0, X0):
11001010 | 00000001 | 01111001 | 10100001 |
-
Вычислим R1 = f (R0, X0) + L0.
Результат преобразования функции f (R0, X0) складываем с L0 по mod 2:
L0: | 11010001 | 11001110 | 11001011 | 11001110 |
f (R0, X0): | 11001010 | 00000001 | 01111001 | 10100001 |
R1: | 10011011 | 11001111 | 01000100 | 01101111 |
Задание №2.
Функция хеширования.
Найти хеш–образ своей Фамилии, используя хеш–функцию mod n, где n = pq, p, q – простые числа.
Хешируемое сообщение «СОЛОСЕНКОВ». Возьмем два простых числа p = 11, q = 17. Определим n = pq = 11*17 = 187. Вектор инициализации выберем равным 10.
Слово «СОЛОСЕНКОВ» можно представить последовательностью чисел(19, 16, 13, 16, 19, 6, 15, 12, 16, 3) по номерам букв в алфавите. Таким образом,
n = 187, H0 = 10, M1=19, M2=16, M3=13, M4=16, M5=19, M6=6, M7=15, M8=12, M9=16, M10=3.
Получим хеш=образ сообщения «СОЛОСЕНКОВ»:
93
В итоге получаем хеш-образ сообщения «СОЛОСЕНКОВ», равный 179
Задание №3.
Простейший генератор паролей.
Написать реализацию (программный код) простейшего генератора паролей, который будет соответствовать требованиям согласно варианту и должен выполнять следующие действия:
1. Ввод идентификатора пользователя с клавиатуры. Данный идентификатор представляет собой последовательность символов , …, , где N – количество символов идентификатора, i - символ идентификатора пользователя.
2. Согласно варианту необходимо сформировать пароль пользователя , …, для данного идентификатора, где M – количество символов пароля и вывести полученный пароль на экран.
Вариант выбран путем 2 последних чисел студ. Билета и вычетом всех вариантов. 32-25 = 7.
М | Перечень требований |
8 | b1, b2 — случайные цифры; b3 - b6 — случайные малые буквы русского алфавита, b7, b8 — случайные символы из множества {!, ”, #, $, %, &, ’, (, ), *} |
Реализация написана на языке программирования C#.
Листинг программы:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GenPass
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
String low_Case = "йцукенгшщзхъфывапролджэячсмитьбю";
String Simv = "!”#$%&’()*";
String num = "1234567890";
String pass = "";
Random rnd = new Random();
for (int i = 0; i <= 1; i++)
{
pass = pass + num[rnd.Next(0, 10)];
}
for (int i = 0; i <=3; i++)
{
pass = pass + low_Case[rnd.Next(0, 32)];
}
for (int i = 0; i <= 1; i++)
{
pass = pass + Simv[rnd.Next(0, 10)];
}
textBox1.Text = pass;
}
}
}
Р езультат выполнения работы: