Тестирование правильности работы программы — КиберПедия 

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Тестирование правильности работы программы

2022-09-12 34
Тестирование правильности работы программы 0.00 из 5.00 0 оценок
Заказать работу

Описание: Выбираем для шифрования сообщение небольшого размера (рис. 3.1).

 

Рис.3.1. Условия теста 1

 

Информация в сообщении:

Hello, world! How are you?

 

Информация после прохождения цикла шифрования/расшифрования:

 

Hello, world! How are you?

 

Результат: Полученное дешифрованное сообщение совпадает с исходным.

Тестирование подмены ключей

Описание: Выбираем для шифрования текстовое сообщение небольшого размера. Задаем исходный ключ.

Информация в файле:

 

Hello, world! How are you?

 

Шифр-текст:

 

¼³_ÑR‘*M£^éCœSŒl›†ñý×ÁG©^¶_ý Ø3

 

На этапе расшифрования меняем ключ. Результат цикла расшифрования:

 

'�No<���}*!?J9�n�e!���?�

 

Результат: Полученное дешифрованное сообщение не совпадает с исходным.


Тестирование подмены символа шифр-текста

Описание: Выбираем для шифрования сообщение небольшого размера. Задаем исходный ключ.

Информация в сообщении:

 

Hello, world! How are you?

 

Шифр-текст:

 

Ó} RÂùԍøœLŽ:ð5þցҶ‰ ýLþ

 

На этапе расшифрования подменяем один символ шифр-текста:

 

A} RÂùԍøœLŽ:ð5þցҶ‰ ýLþ

 

Результат цикла расшифрования:

 

¼§Ú£OüÓ^>›,wH!L©Nþ;’úr

 

Результат: Полученное дешифрованное сообщение не совпадает с исходным.

Тестирование на сообщении с повторяющимися блоками

Описание: Выбираем для шифрования сообщение небольшого размера. Задаем исходный ключ: kskfje1384jsw.

Информация в сообщении:


 

HELLO!!!HELLO!!!HELLO!!!HELLO!!!HELLO!!!HELLO!!!HELLO!!!

 

Шифр-текст:

 

¼‡ú¼-

ׄxÜ„­’7p¤ä=]Iy”4²wÝÛS%´·D)°ŠL6! JªÒ¦;}sf°Ò[Ô²Ú¼

 

Результат цикла расшифрования:

 

HELLO!!!HELLO!!!HELLO!!!HELLO!!!HELLO!!!HELLO!!!HELLO!!!

 

Результат: Мы видим, что результат зашифрования даже двух одинаковых блоков в одном массиве данных будет различным.

Тестирование различия шифр-текстов

Описание: Выбираем для шифрования сообщение небольшого размера. Задаем поочерёдно два различных ключа. Сравнение шифр-текстов на этапах шифрования/дешифрования приведено в таблице 3.1.

 

Таблица 3.1

Сравнение шифр-текстов

Первый ключ Второй ключ
ÜuŠÅGoæÕü§2§_Z_4É_»žóVK¦ë³___Í1 ÅŒj_Ç/bÊY¸\Z¨š‘ÂzvDƒ.á‹ðà 9ŸPšæ
Hello, World! How are you? Hello, World! How are you?

 

Результат: Шифр-тексты не совпадают, но результирующие значения совпадают с начальным и друг с другом.


заключение

В данной курсовой работе были рассмотрены различные методы шифрования, их особенности. Особое внимание было уделено алгоритму ГОСТ 28147-89.

На практике был реализован алгоритм ГОСТ 28147-89 в режиме гаммирования. Результатом работы является программа, осуществляющая шифрование/расшифрование текстовых файлов указанным методом.

 


Список литературы

1. Собственный конспект лекций по дисциплине «Основы криптографии», 2017.

2. Санников В.Г. Введение в теорию и методы криптографической защиты информации: Учебное пособие. — М.: МТУСИ, 2009.

3. Рябко Б.Я., Фионов А.Н. Криптографические методы защиты информации: Учебное пособие. М.: Горячая линия — Телеком, 2005.

4.  Потемкин В.Г., MATLAB: Справочное пособие. М.: Диалог-МИФИ., 1997;

5. Дьяконов В.П. Справочник по применению системы PC MatLAB. М.: Наука, Физматлит., 1993.

6. IT портал [http://habrahabr.ru].

7. A blog covering security and security technology [www.schneier.com].

8. М. Масленников, Практическая криптография / Масленников М. - Спб.: БХВ-Петербург, 2003. - 458 с.

9. С. Панасенко, Алгоритмы шифрования / Панасенко С. - СПб.: БХВ-Петербург, 2009. - 576 с.

10. И. Ященко, Основные математические понятия криптографии / Ященко И.В. - М.: Москва, 2003.
ПРИЛОЖЕНИЕ

namespace GOST

{

public class GOST2814789

{

private byte[] key = new byte[8];

private BitArray baKey;

ulong SyncMessage = 6413657231357313579; // синхропосылка

/// <summary>

/// Ключ

/// </summary>

public string Key

{

get

{

return this.ToStringFromByteArray(this.key);

}

}

public byte[] KeyByte

{

get

{

return this.key;

}

}

private List<byte> cryptMessage;

/// <summary>

/// Таблица замен 8 на 16 состоящая из 4битовых чисел, то есть от 0 до 15.

/// </summary>

private byte[,] matrixH = new byte[8, 16] {

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

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

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

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

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

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

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

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

public GOST2814789(byte[] key)

{

this.key = key;

this.baKey = new BitArray(key);

}

public GOST2814789()

{

// Генерируем Ключ

GenerateKey();

}

/// <summary>

/// Шифровать строку

/// </summary>

/// <param name="source">Строка для зашифровки</param>

/// <returns>Шифр</returns>

public byte[] Crypt(string source)

{

Encoding enc = System.Text.Encoding.GetEncoding("utf-8");

return DoCrypt(enc.GetBytes(source));

}

/// <summary>

/// Шифрует файл

/// </summary>

/// <param name="fs">Files strem</param>

/// <returns>В той же папке создаётся файл с расширением crypt</returns>

public void Crypt(FileStream fs)

{

BinaryWriter bw;

BinaryReader br = new BinaryReader(fs);

byte[] crypt = DoCrypt(br.ReadBytes((int)fs.Length));

// save crypt file

FileStream fsc = new FileStream(fs.Name+".crypt", FileMode.CreateNew);

bw = new BinaryWriter(fsc);

bw.Write(crypt);

bw.Close();

fsc.Close();

fs.Close();

// save key

FileStream fsk = new FileStream(fs.Name + ".key", FileMode.CreateNew);

bw = new BinaryWriter(fsk);

bw.Write(this.key);

bw.Close();

fsk.Close();

}

/// <summary>

/// Расшифровывает строку

/// </summary>

/// <param name="source">Строка для расшифровки</param>

/// <returns>Расшифрованная строка</returns>

public string Decrypt(byte[] source)

{

return System.Text.UTF8Encoding.UTF8.GetString(DoDecrypt(source));

}

/// <summary>

/// Расшифровывает файл

/// </summary>

/// <param name="fs">Files strem</param>

/// <returns>В той же папке создаётся файл с расширением decrypt</returns>

public void Decrypt(FileStream fs)

{

BinaryReader br;

FileStream fsk = new FileStream(fs.Name.Replace(".crypt","") + ".key", FileMode.Open);

br = new BinaryReader(fsk);

byte[] key = br.ReadBytes((int)fs.Length);

br.Close();

fsk.Close();

br = new BinaryReader(fs);

byte[] dcrypt = DoDecrypt(br.ReadBytes((int)fs.Length));

FileStream fsc = new FileStream(fs.Name + ".decrypt", FileMode.CreateNew);

BinaryWriter bw = new BinaryWriter(fsc);

bw.Write(dcrypt);

bw.Close();

fsc.Close();

fs.Close();

}

Размещено на Allbest.ru


Поделиться с друзьями:

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.018 с.