Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

OIB4

.docx
Скачиваний:
17
Добавлен:
01.04.2022
Размер:
84.61 Кб
Скачать

Федеральное агентство связи

Ордена Трудового Красного Знамени федеральное государственное

бюджетное учреждение высшего образования

«Московский технический университет связи и информатики»

Кафедра «Математической кибернетики и информационных технологий»

Лабораторная работа №6

«Электронно-цифровая подпись и приемы хеширования»

Выполнили

Проверила:

Магомедова Д. И.

Москва, 2020 г.

Оглавление

1. Цель работы: 3

2. Ход работы: 3

Пусть а = 17, b = 11, с = МахVal + 1 = 256, t0 = 172. 3

Вычислить контрольные суммы для нескольких сообщений методом контрольных сумм (KSumm) и методом хеширования с применением гаммирования (SummKodBukvOtkr): 3

а) Р = '0123456789', KSumm = ?, SummKodBukvOtkr – ?; 3

б) Р = '9876543210', KSumm = ?, SummKodBukvOtkr – ?; 3

в) Р = '1000005', KSumm = ?, SummKodBukvOtkr – ?; 3

г) Р = '1500000', KSumm = ?, SummKodBukvOtkr – ? 3

4.Код программы 3

5.Результат работы программы 7

1. Цель работы:

Овладеть практическими навыками закрытия информации электронно-цифровой подписью и приемами хеширования, рассмотрение хеширования методом контрольных сумм и методом наложения кодов — гаммированием.

2. Ход работы:

  1. Ознакомиться с теоретической частью данной работы.

  2. Составить программу шифрования методом контрольных сумм.

  3. Составить программу шифрования методом хеширования с применением гаммирования.

  4. Составить отчет по проделанной работе.

  5. Защитить работу.

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

  1. Составить программу шифрования методом контрольных сумм и методом хеширования с применением гаммирования;

  2. Реализовать программу;

Задание для варианта №1

Пусть а = 17, b = 11, с = МахVal + 1 = 256, t0 = 172.

Вычислить контрольные суммы для нескольких сообщений методом контрольных сумм (KSumm) и методом хеширования с применением гаммирования (SummKodBukvOtkr):

а) Р = '0123456789', KSumm = ?, SummKodBukvOtkr – ?;

б) Р = '9876543210', KSumm = ?, SummKodBukvOtkr – ?;

в) Р = '1000005', KSumm = ?, SummKodBukvOtkr – ?;

г) Р = '1500000', KSumm = ?, SummKodBukvOtkr – ?

4.Код программы

private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {

}

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

double a = SomeProjectDLL::Class1::Vvod(textBox2);

double b = SomeProjectDLL::Class1::Vvod(textBox3);

double c = SomeProjectDLL::Class1::Vvod(textBox4);

double t = SomeProjectDLL::Class1::Vvod(textBox5);

String^ s = textBox1->Text;

string myString = marshal_as<string>(s);

double MaxVal = c - 1;

int Ksumm = 0;

int f = (int)c;

for (int i = 0; i < myString.length(); i++)

{

Ksumm += (char)myString[i];

}

if (Ksumm > MaxVal) {

Ksumm = Ksumm % f;

}

textBox6->Text = Convert::ToString(Ksumm);

int i = 1;

if (myString.size() == 10) {

int buf[7];//dvoich

int bufS[7];//dlya T

int bufSS[7];//dlya dboich T

int bufSS1[7];//dlya dboich

int rez[7];

int rezfinal[7] = {14,14,14,14,14,14,14};

bufS[0] = t;

for (int d = 1; d < 8; d++)

{

bufS[d] = ((int)a * bufS[d-1] + (int)b) % (int)c;

}

for (int g = 0; g < 10; g++)

{

int t = 0;

int buk = myString[g];

while (bufS[g] > 1)

{

bufSS[t] = bufS[g] % 2;

bufS[g] /= 2;

t++;

}

t = 0;

while (buk > 1)

{

bufSS[t] = buk % 2;

buk /= 2;

t++;

}

if (rezfinal[0] == 14) {

t = 0;

while (t != 7)

{

rezfinal[t] = (bufSS[t] + bufSS1[t]) % 2;

t++;

}

}

else {

t = 0;

while (t != 7)

{

rez[t] = (bufSS[t] + bufSS1[t]) % 2;

t++;

}

t = 0;

while (t != 7)

{

rezfinal[t] = (rez[t] + rezfinal[t]) % 2;

t++;

}

}

}

int t = 6;

double o = 0;

int hsh = 0;

while (t >=0)

{

hsh += rezfinal[t] * pow(2, o);

o++;

t--;

}

textBox7->Text = Convert::ToString(hsh);

}

if (myString.size() == 7) {

int buf[6];//dvoich

int bufS[6];//dlya T

int bufSS[6];//dlya dboich T

int bufSS1[6];//dlya dboich

int rez[6];

int rezfinal[6] = { 14,14,14,14,14,14 };

bufS[0] = t;

for (int d = 1; d < 7; d++)

{

bufS[d] = ((int)a * bufS[d - 1] + (int)b) % (int)c;

}

for (int g = 0; g < 6; g++)

{

int t = 0;

int buk = myString[g];

while (bufS[g] > 1)

{

bufSS[t] = bufS[g] % 2;

bufS[g] /= 2;

t++;

}

t = 0;

while (buk > 1)

{

bufSS[t] = buk % 2;

buk /= 2;

t++;

}

if (rezfinal[0] == 14) {

t = 0;

while (t != 7)

{

rezfinal[t] = (bufSS[t] + bufSS1[t]) % 2;

t++;

}

}

else {

t = 0;

while (t != 6)

{

rez[t] = (bufSS[t] + bufSS1[t]) % 2;

t++;

}

t = 0;

while (t != 6)

{

rezfinal[t] = (rez[t] + rezfinal[t]) % 2;

t++;

}

}

}

int t = 5;

double o = 0;

int hsh = 0;

while (t >= 0)

{

hsh += rezfinal[t] * pow(2, o);

o++;

t--;

}

textBox7->Text = Convert::ToString(hsh);

}

}

5.Результат работы программы

На рисунке 1 показана реализация программы шифрования методом контрольных сумм и методом хеширования с применением гаммирования.

Рисунок 1 – Результат работы программы

Соседние файлы в предмете Основы информационной безопасности