Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / Курсовой Криптография DES.docx
Скачиваний:
138
Добавлен:
23.07.2013
Размер:
445.83 Кб
Скачать

5. Руководство пользователя программы

5.1 Общие сведения

Изготовитель – Шведов Дмитрий Александрович, студент группы 23К.

Дата создания – февраль 2013 года.

Язык интерфейса пользователя – Русский.

Компоненты пакета – файл: DESCryptography_Shvedov_Dm_A.exe.

5.2 Назначение программы

Программа предназначена для шифрования и дешифрования текстовых сообщений с использованием алгоритма шифрования DES. Возможно шифрование шестью разновидностями алгоритмаDES:DESECB,DESCBC,TripleDESEEE3,TripleDESEEE2,TripleDESEDE3,TripleDESEDE2.

5.3 Используемые технические средства

Операционная система – WindowsXP,Vista, 7, 8

Свободное место на жестком диске – не менее 50 Кб

Объем оперативной памяти – 128 Мб и более

Процессор IntelCorei3 и выше

Видеокарта 512 Мб

5.4 Входные и выходные данные

Входными данными программы являются шифруемое и дешифруемое сообщение, которые задаются пользователем при работе с программой.

Выходные данные – зашифрованное и расшифрованное текстовое сообщение.

5.5 Ввод в действие программного средства

Данный программный продукт не требует установки на ПК, достаточно просто скопировать файл «DESCryptography_Shvedov_Dm_A.exe» в нужную пользователю папку. Для запуска программы необходимо два раза щелкнуть левой кнопкой мыши по исполняемому файлу DESCryptography_Shvedov_Dm_A.exe.

После запуска программы откроется окно программы (рисунок 7) и окно лог файла (рисунок 8).

Рисунок 7. Главное окно программы

Рисунок 8. Окно лог-файла

5.5.1 Интерфейс

Главное окно логически разделено на 3 области (рисунок 9): область 1, справа, в которой выбирается метод шифрования (DESECB,DESCBC,TripleDESEEE3,TripleDESEEE2,TripleDESEDE3,TripleDESEDE2) и вводятся необходимые ключи и начальный вектор (для методаDESCBC) для выбранного метода шифрования. В области 2, слева, расположены 3 текстовых поля. В первое вводится исходное сообщение, во второе после шифрования выводится зашифрованное сообщение, в третье выводится расшифрованное сообщение. В области 3 расположены элементы управления окном лог-файла.

Рисунок 9. Области главного окна

5.5.2 Использование программного средства

Программа реализует следующие функции:

  • Шифрование и дешифрование текста методом DESECB;

  • Шифрование и дешифрование текста методом DESCBC;

  • Шифрование и дешифрование текста методом TripleDESEEE3;

  • Шифрование и дешифрование текста методом TripleDESEEE2;

  • Шифрование и дешифрование текста методом TripleDESEDE3;

  • Шифрование и дешифрование текста методом TripleDESEDE2;

5.5.2.1 Шифрование текста

Для шифрования текста необходимо выбрать в области 2 нужный метод шифрования (рисунок 10). Заполнить в области 2 все видимые поля (в зависимости от выбранного метода шифрования это могут быть «Ключ», «Второй ключ», «Третий ключ» и «Начальный вектор»). В области 1 в верхнее текстовое поле ввести исходное сообщение и нажать кнопку «Crypt». Зашифрованное собщение отобразится в среднем текстовом поле.

5.5.2.2 Дешифрование текста

Для дешифрования текста необходимо выбрать в области 2 нужный метод шифрования (рисунок 10). Заполнить в области 2 все видимые поля (в зависимости от выбранного метода шифрования это могут быть «Ключ», «Второй ключ», «Третий ключ» и «Начальный вектор»). В области 1 в среднее текстовое поле ввести зашифрованное сообщение и нажать кнопку «Decrypt». Расшифрованное собщение отобразится в нижнем текстовом поле.

Рисунок 10. Выбор метода шифрования

5.5.2.3 Открытие / закрытие окна лог-файла

Окно лог файла открывается автоматически при запуске программы. Во время работы программы его можно закрывать и открывать нажатием на кнопку «Открыть/Закрыть окно TestWindow».

5.5.2.4 Сохраненить лог в файл

Результат последнего проведенного шифрования/дешифрования можно сохранить в отдельный файл с расширением «.txt». Для этого необходимо нажать кнопку «Сохранить лог в файл», в открывшемся диалоговом окне выбрать папку для сохранения файла и укакзать имя файла с расширением «.txt».

5.5.2.5 Очистить окно лог-файла

Для очистки окна лог-файла необходимо нажать кнопку «Очистить окно лог-файла».

5.5.2.6 Выход из программы

Для выхода из программы необходимо нажать на кнопку в верхнем правом углу главного окна программы.

Приложение А

КлассForm1

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

namespace DESCryptography_Shvedov_Dm_A

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

public Class_DES_SDmA DES = new Class_DES_SDmA();

public TestWindow TestW = new TestWindow();

public bool ButClose = false;

private void button1_Click(object sender, EventArgs e)

{

switch (comboBox1.SelectedIndex)

{

case (0):

{ //DES ECB ШИФРОВАНИЕ

DES = new Class_DES_SDmA();

byte[] message = Encoding.Default.GetBytes(textBox1.Text);

if (textBox4.Text.Length == 7)

{

byte[] key = Encoding.Default.GetBytes(textBox4.Text);

DES = new Class_DES_SDmA(message);

DES.SetKey(key);

byte[] Coded = DES.CRYPT_ECB();

textBox2.Text = Encoding.Default.GetString(Coded);

for (int i = 0; i < DES.Mas.Count; i++)

{

TestW.listBox1.Items.Add(DES.Mas[i]);

}

}

else { MessageBox.Show("Вы забыли ввести ключ. Длина ключа - 7 символов", "Внимание!"); }

break;

}

case (1):

{ // DES CBC ШИФРОВАНИЕ

byte[] message = Encoding.Default.GetBytes(textBox1.Text);

if (textBox4.Text.Length == 7)

{

if (textBox7.Text.Length == 8)

{

byte[] key = Encoding.Default.GetBytes(textBox4.Text);

DES = new Class_DES_SDmA(message);

DES.SetKey(key);

DES.SetVector(Encoding.Default.GetBytes(textBox7.Text));

byte[] Coded = DES.CRYPT_CBC();

textBox2.Text = Encoding.Default.GetString(Coded);

for (int i = 0; i < DES.Mas.Count; i++)

{

TestW.listBox1.Items.Add(DES.Mas[i]);

}

}

else { MessageBox.Show("Вы забыли ввести начальный вектор. Длина вектора - 8 символов", "Внимание!"); }

}

else { MessageBox.Show("Вы забыли ввести первый ключ. Длина ключа - 7 символов", "Внимание!"); }

break;

}

case (2):

{ // DES EEE3

DES = new Class_DES_SDmA();

byte[] message = Encoding.Default.GetBytes(textBox1.Text);

if (textBox4.Text.Length == 7)

{

if (textBox5.Text.Length == 7)

{

if (textBox6.Text.Length == 7)

{

byte[] key = Encoding.Default.GetBytes(textBox4.Text);

DES = new Class_DES_SDmA(message);

DES.SetFirstKey(key);

DES.SetSecondKey(Encoding.Default.GetBytes(textBox5.Text));

DES.SetThirdKey(Encoding.Default.GetBytes(textBox6.Text));

byte[] Coded = DES.CRYPT_EEE3();

textBox2.Text = Encoding.Default.GetString(Coded);

for (int i = 0; i < DES.Mas.Count; i++)

{

TestW.listBox1.Items.Add(DES.Mas[i]);

}

}

else { MessageBox.Show("Вы забыли ввести третий ключ. Длина ключа - 7 символов", "Внимание!"); }

}

else { MessageBox.Show("Вы забыли ввести второй ключ. Длина ключа - 7 символов", "Внимание!"); }

}

else { MessageBox.Show("Вы забыли ввести первый ключ. Длина ключа - 7 символов", "Внимание!"); }

break;

}

case (3):

{ // DES EDE3

byte[] message = Encoding.Default.GetBytes(textBox1.Text);

if (textBox4.Text.Length == 7)

{

if (textBox5.Text.Length == 7)

{

if (textBox6.Text.Length == 7)

{

byte[] key = Encoding.Default.GetBytes(textBox4.Text);

DES = new Class_DES_SDmA(message);

DES.SetFirstKey(key);

DES.SetSecondKey(Encoding.Default.GetBytes(textBox5.Text));

DES.SetThirdKey(Encoding.Default.GetBytes(textBox6.Text));

byte[] Coded = DES.CRYPT_EDE3();

textBox2.Text = Encoding.Default.GetString(Coded);

for (int i = 0; i < DES.Mas.Count; i++)

{

TestW.listBox1.Items.Add(DES.Mas[i]);

}

}

else { MessageBox.Show("Вы забыли ввести третий ключ. Длина ключа - 7 символов", "Внимание!"); }

}

else { MessageBox.Show("Вы забыли ввести второй ключ. Длина ключа - 7 символов", "Внимание!"); }

}

else { MessageBox.Show("Вы забыли ввести первый ключ. Длина ключа - 7 символов", "Внимание!"); }

break;

}

case (4):

{ // DES EEE2 ШИФРОВАНИЕ

byte[] message = Encoding.Default.GetBytes(textBox1.Text);

if (textBox4.Text.Length == 7)

{

if (textBox5.Text.Length == 7)

{

byte[] key = Encoding.Default.GetBytes(textBox4.Text);

DES = new Class_DES_SDmA(message);

DES.SetFirstKey(key);

DES.SetSecondKey(Encoding.Default.GetBytes(textBox5.Text));

byte[] Coded = DES.CRYPT_EEE2();

textBox2.Text = Encoding.Default.GetString(Coded);

for (int i = 0; i < DES.Mas.Count; i++)

{

TestW.listBox1.Items.Add(DES.Mas[i]);

}

}

else { MessageBox.Show("Вы забыли ввести второй ключ. Длина ключа - 7 символов", "Внимание!"); }

}

else { MessageBox.Show("Вы забыли ввести первый ключ. Длина ключа - 7 символов", "Внимание!"); }

break;

}

case (5):

{ // DES EDE2 ШИФРОВАНИЕ

byte[] message = Encoding.Default.GetBytes(textBox1.Text);

if (textBox4.Text.Length == 7)

{

if (textBox5.Text.Length == 7)

{

byte[] key = Encoding.Default.GetBytes(textBox4.Text);

DES = new Class_DES_SDmA(message);

DES.SetFirstKey(key);

DES.SetSecondKey(Encoding.Default.GetBytes(textBox5.Text));

byte[] Coded = DES.CRYPT_EDE2();

textBox2.Text = Encoding.Default.GetString(Coded);

for (int i = 0; i < DES.Mas.Count; i++)

{

TestW.listBox1.Items.Add(DES.Mas[i]);

}

}

else { MessageBox.Show("Вы забыли ввести второй ключ. Длина ключа - 7 символов", "Внимание!"); }

}

else { MessageBox.Show("Вы забыли ввести первый ключ. Длина ключа - 7 символов", "Внимание!"); }

break;

}

}

}

private void button2_Click(object sender, EventArgs e)

{

switch (comboBox1.SelectedIndex)

{

case (0):

{

DES = new Class_DES_SDmA();

byte[] message = Encoding.Default.GetBytes(textBox2.Text);

if (textBox4.Text.Length == 7)

{

byte[] key = Encoding.Default.GetBytes(textBox4.Text);

DES = new Class_DES_SDmA(message);

DES.SetKey(key);

byte[] Coded = DES.DeCRYPT_ECB();

textBox3.Text = Encoding.Default.GetString(Coded);

for (int i = 0; i < DES.Mas.Count; i++)

{

TestW.listBox1.Items.Add(DES.Mas[i]);

}

}

else { MessageBox.Show("Вы забыли ввести ключ. Длина ключа - 7 символов", "Внимание!"); }

break;

}

case (1):

{

// DES CBC ДеШИФРОВАНИЕ

byte[] message = Encoding.Default.GetBytes(textBox2.Text);

if (textBox4.Text.Length == 7)

{

if (textBox7.Text.Length == 8)

{

byte[] key = Encoding.Default.GetBytes(textBox4.Text);

DES = new Class_DES_SDmA(message);

DES.SetKey(key);

DES.SetVector(Encoding.Default.GetBytes(textBox7.Text));

byte[] Coded = DES.DeCRYPT_CBC();

textBox3.Text = Encoding.Default.GetString(Coded);

for (int i = 0; i < DES.Mas.Count; i++)

{

TestW.listBox1.Items.Add(DES.Mas[i]);

}

}

else { MessageBox.Show("Вы забыли ввести начальный вектор. Длина вектора - 8 символов", "Внимание!"); }

}

else { MessageBox.Show("Вы забыли ввести первый ключ. Длина ключа - 7 символов", "Внимание!"); }

break;

}

case (2):

{ // DES EEE3

DES = new Class_DES_SDmA();

byte[] message = Encoding.Default.GetBytes(textBox2.Text);

if (textBox4.Text.Length == 7)

{

if (textBox5.Text.Length == 7)

{

if (textBox6.Text.Length == 7)

{

byte[] key = Encoding.Default.GetBytes(textBox4.Text);

DES = new Class_DES_SDmA(message);

DES.SetFirstKey(key);

DES.SetSecondKey(Encoding.Default.GetBytes(textBox5.Text));

DES.SetThirdKey(Encoding.Default.GetBytes(textBox6.Text));

byte[] Coded = DES.DeCRYPT_EEE3();

textBox3.Text = Encoding.Default.GetString(Coded);

for (int i = 0; i < DES.Mas.Count; i++)

{

TestW.listBox1.Items.Add(DES.Mas[i]);

}

}

else { MessageBox.Show("Вы забыли ввести третий ключ. Длина ключа - 7 символов", "Внимание!"); }

}

else { MessageBox.Show("Вы забыли ввести второй ключ. Длина ключа - 7 символов", "Внимание!"); }

}

else { MessageBox.Show("Вы забыли ввести первый ключ. Длина ключа - 7 символов", "Внимание!"); }

break;

}

case (3):

{ // DES EDE3 ДеШИФРОВАНИЕ

byte[] message = Encoding.Default.GetBytes(textBox2.Text);

if (textBox4.Text.Length == 7)

{

if (textBox5.Text.Length == 7)

{

if (textBox6.Text.Length == 7)

{

byte[] key = Encoding.Default.GetBytes(textBox4.Text);

DES = new Class_DES_SDmA(message);

DES.SetFirstKey(key);

DES.SetSecondKey(Encoding.Default.GetBytes(textBox5.Text));

DES.SetThirdKey(Encoding.Default.GetBytes(textBox6.Text));

byte[] Coded = DES.DeCRYPT_EDE3();

textBox3.Text = Encoding.Default.GetString(Coded);

for (int i = 0; i < DES.Mas.Count; i++)

{

TestW.listBox1.Items.Add(DES.Mas[i]);

}

}

else { MessageBox.Show("Вы забыли ввести третий ключ. Длина ключа - 7 символов", "Внимание!"); }

}

else { MessageBox.Show("Вы забыли ввести второй ключ. Длина ключа - 7 символов", "Внимание!"); }

}

else { MessageBox.Show("Вы забыли ввести первый ключ. Длина ключа - 7 символов", "Внимание!"); }

break;

}

case (4):

{ // DES EEE2 ДеШИФРОВАНИЕ

byte[] message = Encoding.Default.GetBytes(textBox2.Text);

if (textBox4.Text.Length == 7)

{

if (textBox5.Text.Length == 7)

{

byte[] key = Encoding.Default.GetBytes(textBox4.Text);

DES = new Class_DES_SDmA(message);

DES.SetFirstKey(key);

DES.SetSecondKey(Encoding.Default.GetBytes(textBox5.Text));

byte[] Coded = DES.DeCRYPT_EEE2();

textBox3.Text = Encoding.Default.GetString(Coded);

for (int i = 0; i < DES.Mas.Count; i++)

{

TestW.listBox1.Items.Add(DES.Mas[i]);

}

}

else { MessageBox.Show("Вы забыли ввести второй ключ. Длина ключа - 7 символов", "Внимание!"); }

}

else { MessageBox.Show("Вы забыли ввести первый ключ. Длина ключа - 7 символов", "Внимание!"); }

break;

}

case (5):

{ // DES EDE2 ДеШИФРОВАНИЕ

byte[] message = Encoding.Default.GetBytes(textBox2.Text);

if (textBox4.Text.Length == 7)

{

if (textBox5.Text.Length == 7)

{

byte[] key = Encoding.Default.GetBytes(textBox4.Text);

DES = new Class_DES_SDmA(message);

DES.SetFirstKey(key);

DES.SetSecondKey(Encoding.Default.GetBytes(textBox5.Text));

byte[] Coded = DES.DeCRYPT_EDE2();

textBox3.Text = Encoding.Default.GetString(Coded);

for (int i = 0; i < DES.Mas.Count; i++)

{

TestW.listBox1.Items.Add(DES.Mas[i]);

}

}

else { MessageBox.Show("Вы забыли ввести второй ключ. Длина ключа - 7 символов", "Внимание!"); }

}

else { MessageBox.Show("Вы забыли ввести первый ключ. Длина ключа - 7 символов", "Внимание!"); }

break;

}

}

}

private void Form1_Load(object sender, EventArgs e)

{

TestW = new TestWindow();

TestW.Show();

comboBox1.SelectedIndex = 0;

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

switch (comboBox1.SelectedIndex)

{

case (0):

{

// ECB

label4.Visible = false;

label5.Visible = false;

textBox5.Visible = false;

textBox6.Visible = false;

textBox7.Visible = false;

label6.Visible = false;

break;

}

case (1):

{

// CBC

label4.Visible = false;

label5.Visible = false;

textBox5.Visible = false;

textBox6.Visible = false;

label6.Visible = true;

textBox7.Visible = true;

break;

}

case (2):

{

// EEE3

label4.Visible = true;

label5.Visible = true;

textBox5.Visible = true;

textBox6.Visible = true;

textBox7.Visible = false;

label6.Visible = false;

break;

}

case (3):

{

// EDE3

label4.Visible = true;

label5.Visible = true;

textBox5.Visible = true;

textBox6.Visible = true;

textBox7.Visible = false;

label6.Visible = false;

break;

}

case (4):

{ // EEE2

label4.Visible = true;

label5.Visible = false;

textBox5.Visible = true;

textBox6.Visible = false;

textBox7.Visible = false;

label6.Visible = false;

break;

}

case (5):

{ // EDE2

label4.Visible = true;

label5.Visible = false;

textBox5.Visible = true;

textBox6.Visible = false;

textBox7.Visible = false;

label6.Visible = false;

break;

}

}

}

private void button3_Click(object sender, EventArgs e)

{

string puth = "";

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

{

puth = saveFileDialog1.FileName;

StreamWriter Str = new StreamWriter(puth);

foreach (string s in DES.Mas)

{

Str.WriteLine(s);

}

Str.Close();

}

}

private void button4_Click(object sender, EventArgs e)

{

TestW.listBox1.Items.Clear();

}

private void button5_Click(object sender, EventArgs e)

{

if (ButClose)

{

TestW = new TestWindow();

TestW.Show();

button5.Text = "Закрыть окно TestWindow";

ButClose = false;

}

else

{

TestW.Close();

button5.Text = "Открыть окно TestWindow";

ButClose = true;

}

} } }

Соседние файлы в папке Архив1