Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт по лабораторным.docx
Скачиваний:
12
Добавлен:
18.11.2022
Размер:
494.32 Кб
Скачать

InitializeComponent();

}

private void ключиRSAToolStripMenuItem_Click(object sender, EventArgs e)

{

SaveFileDialog save = new SaveFileDialog();

save.Filter = "Бинарные файлы|*.bin|Все файлы|*.*";

save.Title = "Сохранение открытого и секретного ключа";

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

{

FileStream fs = new FileStream(save.FileName, FileMode.OpenOrCreate);

StreamWriter sw = new StreamWriter(fs);

sw.Write(RSA.ToXmlString(true));

sw.Flush();

fs.Close();

}

SaveFileDialog sf = new SaveFileDialog();

sf.Filter = "Бинарные файлы|*.bin|Все файлы|*.*";

sf.Title = "Сохранение открытого ключа";

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

{

FileStream fis = new FileStream(sf.FileName, FileMode.OpenOrCreate);

StreamWriter stw = new StreamWriter(fis);

stw.Write(RSA.ToXmlString(false));

stw.Flush();

fis.Close();

label1.Text = "Пара ключей успешно создана";

}

}

private void открытьФайлToolStripMenuItem_Click(object sender, EventArgs e)

{

richTextBox1.Clear();

richTextBox1.Visible = true;

OpenFileDialog open = new OpenFileDialog();

open.Filter = "Текстовые файлы|*.txt|Все файлы|*.*";

open.Title = "Открытие файла";

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

{

StreamReader sr = new StreamReader(open.FileName);

richTextBox1.Text = sr.ReadLine();

label1.Text = "";

подписатьToolStripMenuItem.Visible = true;

}

}

private void открытьФайлToolStripMenuItem1_Click(object sender, EventArgs e)

{

richTextBox1.Clear();

richTextBox1.Visible = true;

OpenFileDialog open = new OpenFileDialog();

open.Filter = "Текстовые файлы|*.txt|Все файлы|*.*";

open.Title = "Открытие файла";

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

{

StreamReader sr = new StreamReader(open.FileName);

richTextBox1.Text = sr.ReadLine();

label1.Text = "";

}

}

private void подписатьToolStripMenuItem_Click(object sender, EventArgs e)

{

OpenFileDialog open = new OpenFileDialog();

open.Filter = "Бинарные файлы|*.bin|Все файлы|*.*";

open.Title = "Открытие файла секретного ключа";

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

{

FileStream fs = new FileStream(open.FileName, FileMode.Open);

StreamReader sr = new StreamReader(fs);

RSA.FromXmlString(sr.ReadToEnd());

fs.Close();

sr.Close();

}

SaveFileDialog save = new SaveFileDialog();

save.Filter = "Бинарные файлы|*.bin|Все файлы|*.*";

save.Title = "Сохранение цифровой подписи";

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

{

string text;

text = richTextBox1.Text;

Byte[] sign;

Byte[] data = System.Text.Encoding.UTF8.GetBytes(text);

sign = RSA.SignData(data, new MD5CryptoServiceProvider());

FileStream fis = new FileStream(save.FileName, FileMode.OpenOrCreate);

fis.Write(sign, 0, sign.Length);

fis.Close();

label1.Text = "Цифровая подпись успешно создана";

}

}

private void открытыйКлючToolStripMenuItem_Click(object sender, EventArgs e)

{

OpenFileDialog open = new OpenFileDialog();

open.Filter = "Бинарные файлы|*.bin|Все файлы|*.*";

open.Title = "Открытие файла открытого ключа";

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

{

FileStream fs = new FileStream(open.FileName, FileMode.Open);

StreamReader sr = new StreamReader(fs);

RSA.FromXmlString(sr.ReadToEnd());

sr.Close();

fs.Close();

label1.Text = "Ключ успешно прочитан";

}

}

private void верификацияПодписиToolStripMenuItem_Click(object sender, EventArgs e)

{

OpenFileDialog open = new OpenFileDialog();

open.Filter = "Бинарные файлы|*.bin|Все файлы|*.*";

open.Title = "Открытие файла цифровой подписи";

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

{

String text;

text = richTextBox1.Text;

Byte[] sign = new Byte[64];

Byte[] data = System.Text.Encoding.UTF8.GetBytes(text);

FileStream fs = new FileStream(open.FileName, FileMode.Open);

fs.Read(sign, 0, sign.Length);

fs.Close();

if (RSA.VerifyData(data, new MD5CryptoServiceProvider(), sign))

{

label1.Text = "Подпись верна";

}

else

{

label1.Text = "Подпись не верна";

}

}

}

}

}

Контрольный пример:

Образец главной формы проекта:

Результат работы пункта меню «Ключи RSA»:

Результат работы пункта меню «Открыть файл»:

Результат работы пункта меню «Подписать»:

Результат работы пункта меню «Открытый ключ»:

Результат работы пункта меню «Верификация подписи»: