Державна служба України з надзвичайних ситуацій
Львівський державний університет безпеки життєдіяльності
Кафедра управління інформаційною безпекою
/
Звіт
з лабораторної роботи № 2
з дисципліни «Основи криптографічного захисту»
на тему:
“Досліджуння шифру Кардана ”
Шифр «Кардана».
Код програми:
#include <iostream>
const int m_size = 6;
using namespace std;
int main()
{
	
	int grid[m_size][m_size] = { { 1,0,1,0,0,0 },
	{ 0,0,0,0,0,0 },
	{ 1,1,0,0,0,0 },
	{ 0,0,1,0,0,0 },
	{ 0,0,0,1,1,1 },
	{ 0,0,0,0,1,0 } };
	
	char text_matrix[m_size*m_size];
	cin >> text_matrix;
	int KEY[m_size*m_size];
	int size = 0;
	//0
	int count = 0;
	for (int i = 0; i<m_size; i++) {
		for (int j = 0; j<m_size; j++) {
			if (grid[i][j] == 1) KEY[size++] = count;
			count++;
		}
	}
	//90
	count = 0;
	for (int i = 0; i<m_size; i++) {
		for (int j = 0; j<m_size; j++) {
			if (grid[m_size - j - 1][i] == 1) KEY[size++] = count;
			count++;
		}
	}
	//180
	count = 0;
	for (int i = 0; i<m_size; i++) {
		for (int j = 0; j<m_size; j++) {
			if (grid[m_size - i - 1][m_size - j - 1] == 1) KEY[size++] = count;
			count++;
		}
	}
	//270
	count = 0;
	for (int i = 0; i<m_size; i++) {
		for (int j = 0; j<m_size; j++) {
			if (grid[j][m_size - i - 1] == 1) KEY[size++] = count;
			count++;
		}
	}
	cout<< "Matruza suvy" <<endl;
	for (int i = 0; i < m_size*m_size; i++) {
		cout << KEY[i] << "\t";
		if ((i % 6 == 0)&&(i!=0))
			cout << endl;
	}
	cout << endl;
	int index = 0;
	char result[m_size*m_size];
	for (int i = 0; i<m_size*m_size; i++) {
		index = KEY[i];
		result[index] = text_matrix[i];
	}
	
	cout << endl;
	cout << "zakodovanui text" << endl;
	for (int i = 0; i<m_size*m_size; i++) {
		cout << result[i] << "\t";
		if ((i % 6 == 0) && (i != 0))
			cout << endl;
	
	}
	cout << endl;
	cout << endl;
	index = 0;
	char decode[m_size*m_size];
	for (int i = 0; i<m_size*m_size; i++) {
		index = KEY[i];
		decode[i] = result[index];
	}
	cout << "rozkodovanui text" << endl;
	for (int i = 0; i < m_size*m_size; i++) {
		cout << decode[i] << "\t";
		if ((i % 6 == 0) && (i != 0))
			cout << endl;
	}
	cout << endl;
	system("pause");
	return 0;
}
/
 Рис. 1.Шифр «Кардана»
Висновок: під час виконання даної лабораторної роботи, я ознайомився та проаналізував ще один із видів криптографічного кодування інформації, а саме за допомогою шифру “Кардана”. Код був написаний мовою програмування С++.