Программное обеспечение криптографической системы на основе платформы.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