Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
з лабораторної роботи №6,7
з дисципліни:”Захист інформації в комп’ютерних системах ”
на тему:” Сучасні комп’ютеризовані методи шифрування та дешифрування ві текстових повідомлень ”
Львів
2019
/
/
/
/
Рис.1 Результат роботи програми
Висновок:Під час виконання лабораторної роботи була розроблена програма,яка реалізує кодування шифру Хіла.
Код програми
#include "pch.h"
#include<iostream>
#include<math.h>
#include<stdio.h>
using namespace std;
float encrypt[3][1], decrypt[3][1], a[3][3], b[3][3], mes[3][1], c[3][3];
void encryption();
void decryption();
void getKeyMessage();
void inverse();
int main() {
getKeyMessage();
encryption();
decryption();
system("pause");
}
void encryption() {
int i, j, k;
for (i = 0; i < 3; i++)
for (j = 0; j < 1; j++)
for (k = 0; k < 3; k++)
encrypt[i][j] = encrypt[i][j] + a[i][k] * mes[k][j];
cout << "\nEncrypted string is: ";
for (i = 0; i < 3; i++)
cout << (char)(fmod(encrypt[i][0], 26) + 98);
}
void decryption() {
int i, j, k;
inverse();
for (i = 0; i < 3; i++)
for (j = 0; j < 1; j++)
for (k = 0; k < 3; k++)
decrypt[i][j] = decrypt[i][j] + b[i][k] * encrypt[k][j];
cout << "\nDecrypted string is: ";
for (i = 0; i < 3; i++)
cout << (char)(fmod(decrypt[i][0], 26) + 98);
cout << "\n";
}
void getKeyMessage() {
int i, j;
char msg[4];
cout << "Enter 3x3 matrix for key (It should be inversible):\n";
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++) {
scanf_s("%f", &a[i][j]);
c[i][j] = a[i][j];
}
cout << "\nEnter a 3 letter string: ";
cin >> msg;
for (i = 0; i < 3; i++)
mes[i][0] = msg[i] - 98;
}
void inverse() {
int i, j, k;
float p, q;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++) {
if (i == j)
b[i][j] = 1;
else
b[i][j] = 0;
}
for (k = 0; k < 3; k++) {
for (i = 0; i < 3; i++) {
p = c[i][k];
q = c[k][k];
for (j = 0; j < 3; j++) {
if (i != k) {
c[i][j] = c[i][j] * q - p * c[k][j];
b[i][j] = b[i][j] * q - p * b[k][j];
}
}
}
}
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
b[i][j] = b[i][j] / c[i][i];
cout << "\n\nInverse Matrix is:\n";
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++)
cout << b[i][j] << " ";
cout << "\n";
}
}