Курсовая работа по дисциплине: «Методы и средства защиты информации» - davaiknam.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Название работы Кол-во страниц Размер
Программа-минимум кандидатского экзамена по специальности 05. 1 66.83kb.
Рабочая программа по дисциплине «Методы и средства защиты информации»... 1 124.88kb.
Учебное пособие Часть Методы и средства защиты информации 9 1777.27kb.
Учебно-методический комплекс по дисциплине выбору «Информационная... 4 597.21kb.
Курсовой проект по дисциплине «Методы и средства защиты компьютерной... 1 268.71kb.
Курсовая работа «Криптографические системы защиты данных» 1 174.65kb.
Программа вступительного экзамена в аспирантуру по специальности 05. 1 66.25kb.
Краткая аннотация курса Методы и средства защиты компьютерной информации 1 11.46kb.
Курсовая работа по дисциплине «Методы оптимизации» 1 196.5kb.
Лабораторная работа №2 по дисциплине " Методы и средства гидрометеорологических... 1 174.56kb.
Математические методы защиты информации 1 42.42kb.
Итоговый лексико-грамматический тест №1 1 17.85kb.
Направления изучения представлений о справедливости 1 202.17kb.

Курсовая работа по дисциплине: «Методы и средства защиты информации» - страница №1/1

Федеральное агентство по образованию РФ

Государственное образовательное учреждение

высшего профессионального образования

Тульский государственный университет

кафедра «ЭВМ»

Контрольно-курсовая работа

по дисциплине:

«Методы и средства защиты информации»

Вариант №3

Выполнил:

студент гр. 250261

Косухин К.Ю.



Проверил:

Ивутин А.Н.

Тула 2010

Оглавление


Задание 3

Выполнение задания 4

Введение 4

Сдвиговый регистр с линейной обратной связью 4

Исходный код программы 4

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




Задание


Разработать программу, реализующую потоковый шифр, используя:

  1. генератор  "стоп-пошел"

  2. сдвиговый регистр с линейной обратной связью

  3. длина сдвигового регистра 16 бит


Выполнение задания

Введение


Шифрование выбираем методом XOR, так как он быстр и работает для шифрования и восстановления информации.

Для реализации алгоритма будем использовать Borland C++ Builder 6.

Так как по заданию длина сдвигового регистра равна 16 бит, то генератор случайных чисел будет работать с типом данных unsigned short

Сдвиговый регистр с линейной обратной связью


Регистр сдвига с линейной обратной связью (РСЛОС, англ. Linear feedback shift register, LFSR) — один из методов генерации псевдослучайных чисел.

Регистр сдвига с линейной обратной связью состоит из двух частей: собственно регистра сдвига и функции обратной связи. Регистр состоит из битов, его длина — количество этих бит. Когда нужно извлечь бит, все биты регистра сдвигаются вправо на одну позицию. Новый крайний слева бит определяется функцией остальных битов. На выходе регистра оказывается один, обычно младший, значащий бит. Период регистра сдвига — длина получаемой последовательности до начала её повторения.

Для РСЛОС функция обратной связи представляет собой сумму по модулю 2 (xor) некоторых битов регистра.

Исходный код программы


//---------------------------------------------------------------------------

#include

#include

#include

#pragma hdrstop
using namespace std;
//---------------------------------------------------------------------------
bool TryStringToUShort(const char* stringValue, unsigned short& value) {

istringstream iss(stringValue);



return !(iss>>std::dec>>value).fail();

}
// регистр сдвига с линейной обратной связью

// конфигурация Галуа

class LFSR {

unsigned short value;

unsigned short bit;

unsigned short period;

public:

LFSR(unsigned short seed) {

value = seed;

period = 0;



}
unsigned short Next() {

value = (value >> 1) ^ (-(value & (unsigned short)1u) & 0xB400u);

period++;

return value;

}

};
class StepAndGo {

LFSR lfsr0Generator;



unsigned short lfsr0Value;

LFSR lfsr1Generator;



unsigned short lfsr1Value;

LFSR lfsr2Generator;



unsigned short lfsr2Value;

public:

StepAndGo(unsigned short lfsr0Seed, unsigned short lfsr1Seed, unsigned short lfsr2Seed)



: lfsr0Generator(lfsr0Seed), lfsr1Generator(lfsr1Seed), lfsr2Generator(lfsr2Seed) {

lfsr0Value = lfsr0Seed;

lfsr1Value = lfsr1Seed;

lfsr2Value = lfsr2Seed;



}

unsigned short Generate() {

lfsr2Value = lfsr2Generator.Next();



if(lfsr2Value & 1)

lfsr1Value = lfsr1Generator.Next();



else

lfsr0Value = lfsr0Generator.Next();



return lfsr0Value ^ lfsr1Value;

}

};
union ShortBuf {

char bytes[2];

unsigned short value;

};
void PrintUsage() {

cout<<"arguments: {InFile} {OutFile} {key1} {key2} {key3}"<<endl



<<"where keys is numbers in range from 0 to 65535"<<endl;

}
void Xor(ifstream& inFile, ofstream& outFile, StepAndGo& generator) {

ShortBuf buffer;



while(!inFile.eof()) {

int length = inFile.readsome(buffer.bytes, sizeof(ShortBuf));

if(length == 0)

break;

buffer.value ^= generator.Generate();



if(length == 1) // округляем до одного байта

buffer.value &= (unsigned short)0xffffu;

outFile.write(buffer.bytes, length);

}

}
#pragma argsused

int main(int argc, char* argv[]) {

if(argc < 6) {

PrintUsage();



return 1;

}

unsigned short key1, key2, key3;

if(!TryStringToUShort(argv[3], key1)) {

cout<<"key1 can not be parsed"<<endl;



return 1;

} else if(!TryStringToUShort(argv[4], key2)) {

cout<<"key2 can not be parsed"<<endl;



return 1;

} else if(!TryStringToUShort(argv[5], key3)) {

cout<<"key3 can not be parsed"<<endl;



return 1;

}
ifstream inFile(argv[1]);

if(!inFile) {

cout<<"There is problem with opening {InFile}"<<endl;



return 1;

}

ofstream outFile(argv[2]);



if(!outFile) {

cout<<"There is problem with opening {OutFile}"<<endl;



return 1;

}

Xor(inFile, outFile, StepAndGo(key1, key2, key3));

inFile.close();

outFile.close();



return 0;

}

//---------------------------------------------------------------------------

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


Имеем входной файл «test.txt» с текстом:

он откинулся на спинку своего трона

файл размером 35 байт.

Запускаем программу из командной строки:

Project2.exe test.txt out.txt 1 2 3

В выходнойм файле «out.txt» имеем:



он!Zу°йАrэ°фЃи1"˜о]н^G”«VГїО46иыиm

файл размером 35 байт.

Пробуем расшифровать файл с неверным ключом:

Project2.exe out.txt bad.txt 3 2 1

На выходе в файле «bad.txt» имеем:



нY#ґсЗkы°аRъуп‹!Fп±н±Gв«!wИ”ШУb +c

Теперь пробуем расшифровать файл с правильным ключом:



Project2.exe out.txt result.txt 1 2 3

На выходе имеем файл result.txt:



он откинулся на спинку своего трона

размером 35 байт




Любой машины хватит до конца жизни, если ездить достаточно лихо. «Пшекруй»
ещё >>