- •Лабораторная работа № 1. Симметричное шифрование данных.
- •Лабораторная работа № 2. Дополнительные возможности симметричного шифрование данных.
- •InitializeComponent();
- •Лабораторная работа № 3. Асимметричное шифрование данных.
- •Создать в блокноте файл с некоторым текстом и сохранить его на диске в кодировке Юникод.
- •InitializeComponent();
- •Лабораторная работа № 4. Цифровая подпись.
- •Создать в блокноте файл с некоторым текстом и сохранить его на диске в кодировке Юникод.
- •InitializeComponent();
- •Лабораторная работа № 5. Шифрование в sql Server.
- •Лабораторная работа № 6. Работа с зашифрованными базами в Visual Studio.
- •InitializeComponent();
- •Лабораторная работа № 7. Реализация различных алгоритмов симметричного шифрования данных.
- •InitializeComponent();
- •InitializeComponent();
- •InitializeComponent();
- •InitializeComponent();
- •InitializeComponent();
- •Лабораторная работа № 8. Реализация различных алгоритмов симметричного шифрования данных в комбинации с асимметричным шифрованием.
- •InitializeComponent();
- •Лабораторная работа № 9. Реализация различных алгоритмов хеширования.
- •InitializeComponent();
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»:
Результат работы пункта меню «Открыть файл»:
Результат работы пункта меню «Подписать»:
Результат работы пункта меню «Открытый ключ»:
Результат работы пункта меню «Верификация подписи»: