Программное обеспечение криптографической системы на основе платформы.net

Анализ проблемы защиты информации путем ее преобразования. Описание алгоритмов шифрования. Схема работы программного обеспечения. Состав программных средств разработки. Руководство системного программиста и оператора. Описание контрольного примера.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 12.03.2018
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

{

FormRSA formRSA = new FormRSA ();

this. Hide ();

formRSA. Show ();

}

else if (radioButtonMD5. Checked == true)

{

FormMD5 formMD5 = new FormMD5 ();

this. Hide ();

formMD5. Show ();

}

}

private void Form1_FormClosed (object sender, FormClosedEventArgs e)

{

Application. Exit ();

}

}

}

Файл FormAES. cs

using System;

using System. Text;

using System. Windows. Forms;

using System. Security. Cryptography;

using System. IO;

namespace CryptographySystem

{

public partial class FormAES: Form

{

private Aes myAes = Aes. Create ();

private byte [] key;

private byte [] IV;

private byte [] EncryptText;

public FormAES ()

{

InitializeComponent ();

}

private void FormAES_FormClosed (object sender, FormClosedEventArgs e)

{

Application. Exit ();

}

private void buttonGenerateKeyAes_Click (object sender, EventArgs e)

{

textBoxKeyAES. Clear ();

myAes. GenerateKey ();

key = myAes. Key;

textBoxKeyAES. Text = Encoding. ASCII. GetString (key);

}

private void buttonLoadFileKeyAES_Click (object sender, EventArgs e)

{

openFileDialogKey. Filter = "Text files (*. txt) |*. txt|All files (*. *) |*. *";

if (openFileDialogKey. ShowDialog () == DialogResult. Cancel)

return;

// получаем выбранный файл

string filename = openFileDialogKey. FileName;

// читаем файл в строку

string fileText = File. ReadAllText (filename);

textBoxKeyAES. Text = fileText;

key = Encoding. Default. GetBytes (textBoxKeyAES. Text);

}

private void buttonGenerateIVaes_Click (object sender, EventArgs e)

{

textBoxIVaes. Clear ();

myAes. GenerateIV ();

IV = myAes. IV;

textBoxIVaes. Text = Encoding. ASCII. GetString (IV);

}

private void buttonLoadFileIVaes_Click (object sender, EventArgs e)

{

openFileDialogIV. Filter = "Text files (*. txt) |*. txt|All files (*. *) |*. *";

if (openFileDialogIV. ShowDialog () == DialogResult. Cancel)

return;

// получаем выбранный файл

string filename = openFileDialogIV. FileName;

// читаем файл в строку

string fileText = File. ReadAllText (filename);

textBoxIVaes. Text = fileText;

IV = Encoding. Default. GetBytes (textBoxIVaes. Text);

}

private void buttonLoadFileTextAES_Click (object sender, EventArgs e)

{

openFileDialogText. Filter = "Text files (*. txt) |*. txt|All files (*. *) |*. *";

if (openFileDialogText. ShowDialog () == DialogResult. Cancel)

return;

// получаем выбранный файл

string filename = openFileDialogText. FileName;

// читаем файл в строку

string fileText = File. ReadAllText (filename);

richTextBoxText. Clear ();

richTextBoxText. AppendText (fileText. ToString ());

}

private void buttonLoadFileEncryptTextAES_Click (object sender, EventArgs e)

{

openFileDialogEncryptText. Filter = "Text files (*. txt) |*. txt|All files (*. *) |*. *";

if (openFileDialogEncryptText. ShowDialog () == DialogResult. Cancel)

return;

// получаем выбранный файл

string filename = openFileDialogEncryptText. FileName;

// читаем файл в строку

string fileText = File. ReadAllText (filename. ToString ());

richTextBoxEncryptText. Clear ();

richTextBoxEncryptText. AppendText (fileText);

EncryptText = Encoding. Default. GetBytes (richTextBoxEncryptText. Text);

}

private void buttonEncryptAES_Click (object sender, EventArgs e)

{

if (richTextBoxText. Text == "")

{

MessageBox. Show ("Введите текст для шифрования");

}

else if (textBoxKeyAES. Text == "")

{

MessageBox. Show ("Введите ключ");

}

else if (textBoxIVaes. Text == "")

{

MessageBox. Show ("Введите значение вектора инициализации");

}

else

{

string original = richTextBoxText. Text;

// byte [] encryptedAES = AES. EncryptStringToBytes_Aes (original, key, IV);

EncryptText = AES. EncryptStringToBytes_Aes (original, key, IV);

richTextBoxEncryptText. Clear ();

richTextBoxEncryptText. AppendText (Encoding. ASCII. GetString (EncryptText));

}

}

private void buttonDecryptAES_Click (object sender, EventArgs e)

{

// byte [] encryptedAES = Encoding. Default. GetBytes (richTextBoxEncryptText. Text);

// byte [] key = Encoding. Default. GetBytes (textBoxKeyAES. Text);

// byte [] IV = Encoding. Default. GetBytes (textBoxIVaes. Text);

// byte [] key = myAes. Key;

// byte [] IV = myAes. IV;

if (richTextBoxEncryptText. Text == "")

{

MessageBox. Show ("Введите текст для расшифрования");

}

else if (textBoxKeyAES. Text == "")

{

MessageBox. Show ("Введите ключ");

}

else if (textBoxIVaes. Text == "")

{

MessageBox. Show ("Введите значение вектора инициализации");

}

else

{

string roundtripAES = AES. DecryptStringFromBytes_Aes (EncryptText, key, IV);

richTextBoxText. Clear ();

richTextBoxText. AppendText (roundtripAES);

}

}

private void buttonSaveTextAES_Click (object sender, EventArgs e)

{

saveFileDialogText. Filter = "Text files (*. txt) |*. txt|All files (*. *) |*. *";

if (saveFileDialogText. ShowDialog () == DialogResult. Cancel)

return;

// получаем выбранный файл

string filename = saveFileDialogText. FileName;

// сохраняем текст в файл

File. WriteAllText (filename, richTextBoxText. Text);

MessageBox. Show ("Файл сохранен");

}

private void buttonSaveFileEncryptTextAES_Click (object sender, EventArgs e)

{

saveFileDialogEncryptText. Filter = "Text files (*. txt) |*. txt|All files (*. *) |*. *";

if (saveFileDialogEncryptText. ShowDialog () == DialogResult. Cancel)

return;

// получаем выбранный файл

string filename = saveFileDialogEncryptText. FileName;

// сохраняем текст в файл

File. WriteAllText (filename, richTextBoxEncryptText. Text);

MessageBox. Show ("Файл сохранен");

}

}

}

Файл FormDES. cs

using System;

using System. Text;

using System. Windows. Forms;

using System. Security. Cryptography;

using System. IO;

namespace CryptographySystem

{

public partial class FormDES: Form

{

public FormDES ()

{

InitializeComponent ();

}

private TripleDESCryptoServiceProvider myTripleDES = new TripleDESCryptoServiceProvider ();

private byte [] key;

private byte [] IV;

private byte [] EncryptText;

private void buttonGenerateKeyDes_Click (object sender, EventArgs e)

{

textBoxKeyDES. Clear ();

myTripleDES. GenerateKey ();

key = myTripleDES. Key;

textBoxKeyDES. Text = Encoding. ASCII. GetString (key);

}

private void FormDES_FormClosed (object sender, FormClosedEventArgs e)

{

Application. Exit ();

}

private void buttonLoadFileKeyDES_Click (object sender, EventArgs e)

{

openFileDialogKeyDES. Filter = "Text files (*. txt) |*. txt|All files (*. *) |*. *";

if (openFileDialogKeyDES. ShowDialog () == DialogResult. Cancel)

return;

// получаем выбранный файл

string filename = openFileDialogKeyDES. FileName;

// читаем файл в строку

string fileText = File. ReadAllText (filename);

textBoxKeyDES. Text = fileText;

key = Encoding. Default. GetBytes (textBoxKeyDES. Text);

}

private void buttonGenerateIVdes_Click (object sender, EventArgs e)

{

textBoxIVdes. Clear ();

myTripleDES. GenerateIV ();

IV = myTripleDES. IV;

textBoxIVdes. Text = Encoding. ASCII. GetString (IV);

}

private void buttonLoadFileTextDES_Click (object sender, EventArgs e)

{

openFileDialogText. Filter = "Text files (*. txt) |*. txt|All files (*. *) |*. *";

if (openFileDialogText. ShowDialog () == DialogResult. Cancel)

return;

// получаем выбранный файл

string filename = openFileDialogText. FileName;

// читаем файл в строку

string fileText = File. ReadAllText (filename);

richTextBoxText. Clear ();

richTextBoxText. AppendText (fileText. ToString ());

}

private void buttonLoadFileIVdes_Click (object sender, EventArgs e)

{

openFileDialogIVdes. Filter = "Text files (*. txt) |*. txt|All files (*. *) |*. *";

if (openFileDialogIVdes. ShowDialog () == DialogResult. Cancel)

return;

// получаем выбранный файл

string filename = openFileDialogIVdes. FileName;

// читаем файл в строку

string fileText = File. ReadAllText (filename);

textBoxIVdes. Text = fileText;

IV = Encoding. Default. GetBytes (textBoxIVdes. Text);

}

private void buttonLoadFileEncryptTextDES_Click (object sender, EventArgs e)

{

openFileDialogEncryptText. Filter = "Text files (*. txt) |*. txt|All files (*. *) |*. *";

if (openFileDialogEncryptText. ShowDialog () == DialogResult. Cancel)

return;

// получаем выбранный файл

string filename = openFileDialogEncryptText. FileName;

// читаем файл в строку

string fileText = File. ReadAllText (filename. ToString ());

richTextBoxEncryptText. Clear ();

richTextBoxEncryptText. AppendText (fileText);

EncryptText = Encoding. Default. GetBytes (richTextBoxEncryptText. Text);

}

private void buttonEncryptDES_Click (object sender, EventArgs e)

{

if (richTextBoxText. Text == "")

{

MessageBox. Show ("Введите текст для шифрования");

}

else if (textBoxKeyDES. Text == "")

{

MessageBox. Show ("Введите ключ");

}

else if (textBoxIVdes. Text == "")

{

MessageBox. Show ("Введите значение вектора инициализации");

}

else

{

string original = richTextBoxText. Text;

// byte [] encryptedAES = AES. EncryptStringToBytes_Aes (original, key, IV);

EncryptText = TripleDes. EncryptStringToBytes (original, key, IV);

richTextBoxEncryptText. Clear ();

richTextBoxEncryptText. AppendText (Encoding. ASCII. GetString (EncryptText));

}

}

private void buttonDecryptDES_Click (object sender, EventArgs e)

{

if (richTextBoxEncryptText. Text == "")

{

MessageBox. Show ("Введите текст для расшифрования");

}

else if (textBoxKeyDES. Text == "")

{

MessageBox. Show ("Введите ключ");

}

else if (textBoxIVdes. Text == "")

{

MessageBox. Show ("Введите значение вектора инициализации");

}

else

{

string roundtripDES = TripleDes. DecryptStringFromBytes (EncryptText, key, IV);

richTextBoxText. Clear ();

richTextBoxText. AppendText (roundtripDES);

}

}

private void buttonSaveTextDES_Click (object sender, EventArgs e)

{

saveFileDialogText. Filter = "Text files (*. txt) |*. txt|All files (*. *) |*. *";

if (saveFileDialogText. ShowDialog () == DialogResult. Cancel)

return;

// получаем выбранный файл

string filename = saveFileDialogText. FileName;

// сохраняем текст в файл

File. WriteAllText (filename, richTextBoxText. Text);

MessageBox. Show ("Файл сохранен");

}

private void buttonSaveFileEncryptTextDES_Click (object sender, EventArgs e)

{

saveFileDialogEncryptText. Filter = "Text files (*. txt) |*. txt|All files (*. *) |*. *";

if (saveFileDialogEncryptText. ShowDialog () == DialogResult. Cancel)

return;

// получаем выбранный файл

string filename = saveFileDialogEncryptText. FileName;

// сохраняем текст в файл

File. WriteAllText (filename, richTextBoxEncryptText. Text);

MessageBox. Show ("Файл сохранен");

}

}

}

Файл FormRSA. cs

using System;

using System. Collections. Generic;

using System. Windows. Forms;

using System. IO;

using System. Diagnostics;

namespace CryptographySystem

{

public partial class FormRSA: Form

{

public FormRSA ()

{

InitializeComponent ();

}

private void sourceFileButton_Click (object sender, EventArgs e)

{

OpenFileDialog ofd = new OpenFileDialog ();

ofd. Filter = "txt files (*. txt) |*. txt|All files (*. *) |*. *";

if (ofd. ShowDialog () == DialogResult. OK)

{

sourceFilePathTextBox. Text = ofd. FileName;

}

}

private void signFileButton_Click (object sender, EventArgs e)

{

OpenFileDialog ofd = new OpenFileDialog ();

ofd. Filter = "txt files (*. txt) |*. txt|All files (*. *) |*. *";

if (ofd. ShowDialog () == DialogResult. OK)

{

signFilePathTextBox. Text = ofd. FileName;

}

}

private void signButton_Click (object sender, EventArgs e)

{

if ( (textBox_p. Text. Length > 0) && (textBox_q. Text. Length > 0) && (sourceFilePathTextBox. Text. Length > 0) && (signFilePathTextBox. Text. Length > 0))

{

long p = Convert. ToInt64 (textBox_p. Text);

long q = Convert. ToInt64 (textBox_q. Text);

if (RSA. IsTheNumberSimple (p) && RSA. IsTheNumberSimple (q))

{

string hash = File. ReadAllText (sourceFilePathTextBox. Text). GetHashCode (). ToString ();

long n = p * q;

long m = (p - 1) * (q - 1);

long d = RSA. Calculate_d (m);

long e_ = RSA. Calculate_e (d, m);

List<string> result = RSA. RSA_Endoce (hash, e_, n);

StreamWriter sw = new StreamWriter (signFilePathTextBox. Text);

foreach (string item in result)

sw. WriteLine (item);

sw. Close ();

textBox_d. Text = d. ToString ();

textBox_n. Text = n. ToString ();

Process. Start (signFilePathTextBox. Text);

}

else

MessageBox. Show ("p или q - не простые числа!");

}

else

MessageBox. Show ("Введите p и q и пути к файлам!");

}

private void checkSignButton_Click (object sender, EventArgs e)

{

if ( (textBox_d. Text. Length > 0) && (textBox_n. Text. Length > 0) && (sourceFilePathTextBox. Text. Length > 0) && (signFilePathTextBox. Text. Length > 0))

{

long d = Convert. ToInt64 (textBox_d. Text);

long n = Convert. ToInt64 (textBox_n. Text);

List<string> input = new List<string> ();

StreamReader sr = new StreamReader (signFilePathTextBox. Text);

while (! sr. EndOfStream)

{

input. Add (sr. ReadLine ());

}

sr. Close ();

string result = RSA. RSA_Dedoce (input, d, n);

string hash = File. ReadAllText (sourceFilePathTextBox. Text). GetHashCode (). ToString ();

if (result. Equals (hash))

MessageBox. Show ("Файл подлинный. Подпись верна. ");

else

MessageBox. Show ("Внимание! Файл НЕ подлинный!!!");

}

else

MessageBox. Show ("Введите секретный ключ и пути к файлам!");

}

private void FormRSA_FormClosed (object sender, FormClosedEventArgs e)

{

Application. Exit ();

}

}

}

Файл FormMD5. cs

using System;

using System. Windows. Forms;

using System. Security. Cryptography;

namespace CryptographySystem

{

public partial class FormMD5: Form

{

public FormMD5 ()

{

InitializeComponent ();

}

private void FormMD5_FormClosed (object sender, FormClosedEventArgs e)

{

Application. Exit ();

}

private void buttonToGetHash_Click (object sender, EventArgs e)

{

if (textBoxTextToGetHash. Text == "")

{

MessageBox. Show ("Введите текст");

}

else

{

string text = textBoxTextToGetHash. Text;

textBoxHash. Clear ();

using (MD5 md5Hash = MD5. Create ())

{

string hash = md5. GetMd5Hash (md5Hash, text);

textBoxHash. Text = hash;

}

}

}

private void buttonCompareTextHash_Click (object sender, EventArgs e)

{

if ( (textBoxTextCompare. Text == "") || (textBoxHashCompare. Text == ""))

{

MessageBox. Show ("Введите текст или значение хэш");

}

else

{

string text = textBoxTextCompare. Text;

string hash = textBoxHashCompare. Text;

using (MD5 md5Hash = MD5. Create ())

{

if (md5. VerifyMd5Hash (md5Hash, text, hash))

{

labelAnswerAboutCompare. Text = "Значения хэш совпадают";

}

else

{

labelAnswerAboutCompare. Text = "Значения хэш не совпадают";

}

}

}

}

}

}

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


Подобные документы

  • Основные методы криптографической защиты информации. Система шифрования Цезаря числовым ключом. Алгоритмы двойных перестановок и магические квадраты. Схема шифрования Эль Гамаля. Метод одиночной перестановки по ключу. Криптосистема шифрования данных RSA.

    лабораторная работа [24,3 K], добавлен 20.02.2014

  • Методы криптографической защиты информации в России в XIX веке. Описание структуры программы: библиотека DLL, графическая оболочка, консольная реализация. Вид функции шифрования. Инструкция системного программиста. Класс для шифровки, расшифровки данных.

    контрольная работа [26,3 K], добавлен 22.12.2011

  • Разработка программного обеспечения, которое позволит автоматизировать работу менеджера с клиентами и поставщиками. Определение требований, тестирование, описание программы. Руководство системного программиста. Создание СУБД в DELPHI для менеджера.

    дипломная работа [775,0 K], добавлен 16.06.2014

  • Классификация служебных программных средств. Файловая структура операционных систем. Основы графического интерфейса пользователя Windows XX. Анализ алгоритмов решения задач. Описание процесса разработки программного обеспечения и результатов работы.

    курсовая работа [2,4 M], добавлен 14.11.2016

  • Обзор существующих технологий разработки программного обеспечения. Описание платформы NET Framework. Принцип работы платформы: компиляция исходного кода; процесс загрузки и исполнения кода; IL-код и верификация. Новые возможности платформы NET Framework.

    реферат [30,7 K], добавлен 01.03.2011

  • Разработка программного обеспечения для реализации криптографической защиты информации. Обоснование выбора аппаратно-программных средств. Проектирование модели информационных потоков данных, алгоритмического обеспечения, структурной схемы программы.

    дипломная работа [2,0 M], добавлен 10.11.2014

  • Требования к программе или программному продукту. Условия эксплуатации и требования к параметрам технических средств. Программное обеспечение, рекомендуемое для функционирования программы. Руководство системного программиста и настройка программы.

    отчет по практике [1,1 M], добавлен 22.07.2012

  • Сущность понятия "программное обеспечение". Типы прикладных программ. Современные системы программирования для персональных компьютеров. Уровни программного обеспечения: базовый, системный, служебный. Классификация служебных программных средств.

    реферат [20,2 K], добавлен 01.04.2010

  • Анализ предметной области. Диаграмма классов. Проектирование программного продукта "Часы". Тестирование и отладка, руководство программиста. Описание работы приложения. Руководство оператора, модель жизненного цикла. Файл Times.cs, Arrow.cs, Form1.cs.

    курсовая работа [1,7 M], добавлен 20.04.2015

  • Проектирование логической модели системы: контекстная диаграмма и детализация процессов, реализация ссылочной целостности. Описание работоспособного программного обеспечения для проекта. SQL-определения запросов. Описание базы данных контрольного примера.

    курсовая работа [91,4 K], добавлен 01.09.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.