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

Лабораторная работа № 1. Симметричное шифрование данных.

  1. Создать в блокноте файл с некоторым текстом и сохранить его на диске в кодировке Юникод.

  2. Создать в Visual Studio .Net программу, осуществляющую шифровку и расшифровку этого файла с помощью алгоритма DES.

  3. Нанести на форму два элемента RichTextBox.

  4. Создать на форме меню из двух пунктов: Шифрование и Дешифрование.

  5. В меню Шифрование создать следующие подменю: Создать ключ, Зашифровать информацию, Отобразить шифрованную информацию.

  6. В меню Создать ключ реализовать следующие функции: создание нового ключа алгоритма DES и сохранение его в файле с заданным именем. Имя файла выбирается пользователем с помощью элемента управления SaveFileDialog.

  7. В меню Зашифровать информацию реализовать следующие функции: выбор файла для шифрования (с помощью элемента управления OpenFileDialog), шифрование его по алгоритму DES с помощью ключа, созданного в пункте 6 и сохранение информации в файле, имя которого следует выбрать с помощью элемента управления SaveFileDialog.

  8. В меню Отобразить зашифрованную информацию реализовать следующие функции: выбор имени зашифрованного файла (с помощью элемента OpenFileDialog) и отображение зашифрованной информации в одном из элементов управления RichTextBox.

  9. В меню Дешифрование создать следующие подменю: Прочесть информацию о ключе, Расшифровать файл.

  10. В меню Прочесть информацию о ключе реализовать следующие функции: выбор имени файла ключа (с помощью элемента OpenFileDialog) и чтение информации о ключе.

  11. В меню Расшифровать файл реализовать следующие функции: выбор имени зашифрованного файла (с помощью элемента OpenFileDialog), его расшифровка и отображение расшифрованной информации во втором элементе RichTextBox.

  12. Создать файл ключа и зашифровать файл, созданный в пункте 1.

  13. Перенести файл ключа и зашифрованный файл на другой компьютер. Перенести также свою программу.

  14. Проверить работу своей программы в режиме расшифровки.

Текст программы:

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();

}

}

}

}

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

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

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

Результат работы пункта меню «Зашифровать информацию»:

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

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

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