- •Лабораторная работа № 1. Симметричное шифрование данных.
- •Лабораторная работа № 2. Дополнительные возможности симметричного шифрование данных.
- •InitializeComponent();
- •Лабораторная работа № 3. Асимметричное шифрование данных.
- •Создать в блокноте файл с некоторым текстом и сохранить его на диске в кодировке Юникод.
- •InitializeComponent();
- •Лабораторная работа № 4. Цифровая подпись.
- •Создать в блокноте файл с некоторым текстом и сохранить его на диске в кодировке Юникод.
- •InitializeComponent();
- •Лабораторная работа № 5. Шифрование в sql Server.
- •Лабораторная работа № 6. Работа с зашифрованными базами в Visual Studio.
- •InitializeComponent();
- •Лабораторная работа № 7. Реализация различных алгоритмов симметричного шифрования данных.
- •InitializeComponent();
- •InitializeComponent();
- •InitializeComponent();
- •InitializeComponent();
- •InitializeComponent();
- •Лабораторная работа № 8. Реализация различных алгоритмов симметричного шифрования данных в комбинации с асимметричным шифрованием.
- •InitializeComponent();
- •Лабораторная работа № 9. Реализация различных алгоритмов хеширования.
- •InitializeComponent();
Лабораторная работа № 1. Симметричное шифрование данных.
Создать в блокноте файл с некоторым текстом и сохранить его на диске в кодировке Юникод.
Создать в Visual Studio .Net программу, осуществляющую шифровку и расшифровку этого файла с помощью алгоритма DES.
Нанести на форму два элемента RichTextBox.
Создать на форме меню из двух пунктов: Шифрование и Дешифрование.
В меню Шифрование создать следующие подменю: Создать ключ, Зашифровать информацию, Отобразить шифрованную информацию.
В меню Создать ключ реализовать следующие функции: создание нового ключа алгоритма DES и сохранение его в файле с заданным именем. Имя файла выбирается пользователем с помощью элемента управления SaveFileDialog.
В меню Зашифровать информацию реализовать следующие функции: выбор файла для шифрования (с помощью элемента управления OpenFileDialog), шифрование его по алгоритму DES с помощью ключа, созданного в пункте 6 и сохранение информации в файле, имя которого следует выбрать с помощью элемента управления SaveFileDialog.
В меню Отобразить зашифрованную информацию реализовать следующие функции: выбор имени зашифрованного файла (с помощью элемента OpenFileDialog) и отображение зашифрованной информации в одном из элементов управления RichTextBox.
В меню Дешифрование создать следующие подменю: Прочесть информацию о ключе, Расшифровать файл.
В меню Прочесть информацию о ключе реализовать следующие функции: выбор имени файла ключа (с помощью элемента OpenFileDialog) и чтение информации о ключе.
В меню Расшифровать файл реализовать следующие функции: выбор имени зашифрованного файла (с помощью элемента OpenFileDialog), его расшифровка и отображение расшифрованной информации во втором элементе RichTextBox.
Создать файл ключа и зашифровать файл, созданный в пункте 1.
Перенести файл ключа и зашифрованный файл на другой компьютер. Перенести также свою программу.
Проверить работу своей программы в режиме расшифровки.
Текст программы:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Security.Cryptography;
using System.IO;
namespace Информационная_безопасность__1
{
public partial class Form1 : Form
{
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
string text;
public Form1()
{
InitializeComponent();
}
private void создатьКлючToolStripMenuItem_Click(object sender, EventArgs e)
{
зашифроватьТекстToolStripMenuItem.Visible = true;
расшифорватьФайлToolStripMenuItem.Visible = true;
SaveFileDialog save = new SaveFileDialog();
save.Filter = "Бинарные файлы|*.bin|Все файлы|*.*";
if(save.ShowDialog()==DialogResult.OK)
{
FileStream writer = new FileStream(save.FileName, FileMode.OpenOrCreate);
writer.Write(DES.Key, 0, DES.Key.Length);
writer.Close();
label1.Text = "Ключ успешно создан";
}
}
private void зашифроватьТекстToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog open = new OpenFileDialog();
open.Filter= "Текстовый документ (*.txt)|*.txt|Все файлы (*.*)|*.*";
if (open.ShowDialog()==DialogResult.OK)
{
label1.Text = "";
ICryptoTransform cyber = DES.CreateEncryptor();
FileStream opener = new FileStream(open.FileName, FileMode.OpenOrCreate);
StreamReader read = new StreamReader(opener);
text = read.ReadToEnd();
read.Close();
opener.Close();
SaveFileDialog save = new SaveFileDialog();
save.Filter = "Бинарные файлы|*.bin|Все файлы|*.*";
if (save.ShowDialog() == DialogResult.OK)
{
FileStream creator = new FileStream(save.FileName, FileMode.OpenOrCreate);
creator.Write(DES.IV, 0, DES.IV.Length);
CryptoStream crypto = new CryptoStream(creator, cyber, CryptoStreamMode.Write);
StreamWriter write = new StreamWriter(crypto);
write.Write(text);
write.Flush();
crypto.FlushFinalBlock();
write.Close();
creator.Close();
label1.Text = "Файл успешно зашифрован";
}
}
}
private void прочестьИнформациюОКлючеToolStripMenuItem_Click(object sender, EventArgs e)
{
зашифроватьТекстToolStripMenuItem.Visible = true;
расшифорватьФайлToolStripMenuItem.Visible = true;
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Бинарные файлы|*.bin|Все файлы|*.*";
if (open.ShowDialog()==DialogResult.OK)
{
FileStream opener = new FileStream(open.FileName, FileMode.Open);
byte[] key = new byte[DES.Key.Length];
opener.Read(key, 0, key.Length);
DES.Key = key;
opener.Close();
label1.Text = "Ключ успешно прочитан";
}
}
private void отображитьШифрованнуюИнформациюToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.Clear();
label1.Text = "";
OpenFileDialog open = new OpenFileDialog();
open.Filter= "Бинарные файлы|*.bin|Все файлы|*.*";
if(open.ShowDialog()==DialogResult.OK)
{
FileStream opener = new FileStream(open.FileName, FileMode.Open);
opener.Seek(DES.IV.Length, SeekOrigin.Begin);
StreamReader read = new StreamReader(opener);
richTextBox1.Visible = true;
richTextBox1.Text = read.ReadToEnd();
opener.Close();
read.Close();
}
}
private void расшифорватьФайлToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox2.Clear();
label1.Text = "";
OpenFileDialog open = new OpenFileDialog();
open.Filter= "Бинарные файлы|*.bin|Все файлы|*.*";
if (open.ShowDialog() == DialogResult.OK)
{
FileStream opener = new FileStream(open.FileName, FileMode.Open);
byte[] key = new byte[DES.IV.Length];
opener.Read(key, 0, key.Length);
DES.IV = key;
ICryptoTransform cyber = DES.CreateDecryptor();
CryptoStream crypto = new CryptoStream(opener, cyber, CryptoStreamMode.Read);
StreamReader read = new StreamReader(crypto);
richTextBox2.Visible = true;
richTextBox2.Text = read.ReadToEnd();
read.Close();
}
}
}
}
Контрольный пример:
Образец главной формы проекта:
Результат работы пункта меню «Создать ключ»:
Результат работы пункта меню «Зашифровать информацию»:
Результат работы пункта меню «Отобразить шифрованную информацию»:
Результат работы пункта меню «Расшифровать файл»:
Результат работы пункта меню «Прочесть информацию о ключе»: