Лабораторна робота з «Основи інформаційної безпеки»
Автор: Юрий Балицкий • Июнь 10, 2023 • Лабораторная работа • 6,519 Слов (27 Страниц) • 148 Просмотры
Міністерство освіти і науки України
Вінницький національний технічний університет
Кафедра програмного забезпечення
Лабораторна робота №1
з дисципліни «Основи інформаційної безпеки»
Виконав:
ст. гр. 3ПІ-19б, Баліцкий Ю.В.
Перевірив: Тужанський С.Є.
Вінниця 2022р.
Тема: Контроль цілісності програм і даних
Мета: Ознайомитись на практиці з методами перевірки цілісності програм і даних.
Варіант 1
Задача: Розробити програму для формування контрольних сум з використанням CRC-кодів.
Номер варіанту | Код | Многочлен g(Х), що породжує |
1 | CRC-4 | 1 + x + x4, використовується в ISDN |
Лістинг програми
#include<stdio.h>
#include<iostream>
#include<math.h>
#include <fstream>
#include <string.h>
using namespace std;
string Remainder, Codeword; char a[32], sum[32], comp[32];
/////
void checksum2(char checksum[4]) {
char carr = '0';
for (int t = 3; t >= 0; t--) {
if (checksum[t] == '0' && sum[t] == '0' && carr == '0')
{
sum[t] = '0';
}
else if (checksum[t] == '0' && sum[t] == '1' && carr == '0')
{
sum[t] = '0';
}
else if (checksum[t] == '1' && sum[t] == '0' && carr == '0')
{
sum[t] = '0';
}
else if (checksum[t] == '1' && sum[t] == '1' && carr == '0')
{
sum[t] = '0'; carr = '1';
}
else if (checksum[t] == '0' && sum[t] == '0' && carr == '1')
{
sum[t] = '1';
}
else if (checksum[t] == '0' && sum[t] == '1' && carr == '1')
{
sum[t] = '0'; carr = '1';
}
else if (checksum[t] == '1' && sum[t] == '0' && carr == '1')
{
sum[t] = '0'; carr = '1';
}
else if (checksum[t] == '1' && sum[t] == '1' && carr == '1')
{
sum[t] = '1'; carr = '1';
}
}
if (carr == '1') {
if (sum[3] == '0')
sum[3] = '1';
else if (sum[3] == '1' && sum[2] == '0')
{
sum[2] = '1'; sum[3] = '0';
}
else if (sum[3] == '1' && sum[2] == '1' && sum[1] == '0')
{
sum[1] = '1'; sum[2] = '0'; sum[3] = '0';
}
else if (sum[3] == '1' && sum[2] == '1' && sum[1] == '1' && sum[0] == '0')
{
sum[0] = '1'; sum[1] = '0'; sum[2] = '0'; sum[3] = '0';
}
else
carr = '0';
}
}
////
void checksum() {
char carry = '0';
int i, ov = 0, count = 3;
int length = strlen(a);
// cout<<"\n"<<a<<" "<<length;
if (strlen(a) == 8 || strlen(a) == 16 || strlen(a) == 24 || strlen(a) == 32) {
for (i = length - 1; i >= length - 4; i--) {
//cout<<endl<<a[i-4]<<endl;
if (length == 8 && a[i] == '0' && a[i - 4] == '0' && carry == '0')
sum[count] = '0';
else if (length == 8 && a[i] == '0' && a[i - 4] == '1' && carry == '0')
sum[count] = '1';
else if (length == 8 && a[i] == '1' && a[i - 4] == '0' && carry == '0')
sum[count] = '1';
else if (length == 8 && a[i] == '1' && a[i - 4] == '1' && carry == '0')
{
sum[count] = '0'; carry = '1';
}
//
else if (length == 8 && a[i] == '0' && a[i - 4] == '0' && carry == '1')
{
sum[count] = '1'; carry = '0';
}
else if (length == 8 && a[i] == '0' && a[i - 4] == '1' && carry == '1')
{
sum[count] = '0'; carry = '1';
}
else if (length == 8 && a[i] == '1' && a[i - 4] == '0' && carry == '1')
{
sum[count] = '0'; carry = '1';
}
else if (length == 8 && a[i] == '1' && a[i - 4] == '1' && carry == '1')
{
sum[count] = '1'; carry = '1';
}
/////////////////////
else if (length == 16 && a[i] == '0' && a[i - 4] == '0' && a[i - 8] == '0' && a[i - 12] == '0' && carry == '0')
sum[count] = '0';
...