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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ и НАУКИ

КЫРГЫЗСКОЙ РЕСПУБЛИКИ

КЫРГЫЗСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ им. И. РАЗЗАКОВА

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КАФЕДРА «ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА»

Отчет

По защите информации

Лабораторная работа 4

.

Бишкек 2019

#include<iostream>

#include<cmath>

#include<bitset>

using namespace std;

int main() {

setlocale(0, "");

string txt = "фары", SM, T, H, MM, Sd, St;

char ST[4];

int ind = 0, in = 0, P[4] = { 2, 0, 3, 1 }, PP[4] = { 1, 3, 0, 2 };

bitset<4>sd[16] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };

bitset<2>st[4] = { 00,01,10,11 };

bitset<4>tab[4][16] = { { 2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9 },

{ 14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6 },

{ 4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14 },

{ 11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3 } };

bitset<CHAR_BIT>b[6];

bitset<1>M[48];

bitset<1>MS[32];

bitset<1>MP[32];

bitset<4>DD[10];

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

b[i] = txt[i];

H = b[i].to_string();

for (size_t j = 0; j < H.length(); j++) {

M[ind] = H[j];

ind++;

}

}

//Вывод таблицы

cout << " ";

for (int i = 0; i < 16; i++) {

cout << sd[i] << " ";

}

cout << endl;

for (int i = 0; i < 4; i++) {

cout << st[i] << " ";

for (int j = 0; j < 16; j++) {

cout << tab[i][j] << " ";

}

cout << endl;

}

cout << endl;

for (int i = 0; i < 48; i++) {

cout << M[i];

}

cout << endl;

int a = 0, c = 2;

int ind1, ind2;

for (int i = 0; i < 48; i++) {

MM.append(M[i].to_string(), 0, 1);

}

for (int i = 0; i < 8; i++) {

St.append(MM, a, 2);

Sd.append(MM, c, 4);

a += 6;

c += 6;

bitset<2>ST1(St);

bitset<4>SD(Sd);

for (int i = 0; i < 4; i++) {

if (st[i] == ST1) {

ind1 = i;

}

}

for (int i = 0; i < 16; i++) {

if (sd[i] == SD) {

ind2 = i;

}

}

cout << tab[ind1][ind2];

DD[i] = tab[ind1][ind2];

Sd.erase();

St.erase();

}

cout << endl;

int n = 0, NB = 0, index = 0;

while (n < 32) {

H = DD[n].to_string();

for (size_t j = 0; j < H.length(); j++) {

MS[index] = H[j];

index++;

}

MP[n] = MS[P[n % 4] + NB * 4];

cout << MP[n];

if ((n + 1) % 4 == 0 && n != 0) NB++;

n++;

}

cout << endl;

ind = 0; in = 0;

for (int i = 0; i < 32; i++) {

SM.append(MP[i].to_string(), 0, 1);

}

int k = 0;

for (int i = 0; i < 4; i++) {

T.append(SM, k, 8);

char *c = const_cast<char *>(T.c_str());

bitset<CHAR_BIT>bin(c);

ST[i] = char(bin.to_ulong());

cout << ST[i];

T.erase();

k += 8;

}

cout << endl << endl << endl << endl;

//Расшифровка

bitset<CHAR_BIT>B[4];

ind = 0;

for (int i = 0; i < 4; i++) {

B[i] = ST[i];

H = B[i].to_string();

for (size_t j = 0; j < H.length(); j++) {

M[ind] = H[j];

cout << M[ind];

ind++;

}

}

cout << endl;

n = 0; NB = 0;

while (n < 32) {

MP[n] = M[PP[n % 4] + NB * 4];

cout << MP[n];

if ((n + 1) % 4 == 0 && n != 0) NB++;

n++;

}

cout << endl;

system("pause");

}

Соседние файлы в папке Защита Информации