Файл: Контрольная работа 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




  1. Найдем значение функции преобразования 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



  1. Вычислим 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;

}

}

}

Р езультат выполнения работы: