Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АЯП пояснительная.docx
Скачиваний:
2
Добавлен:
06.09.2019
Размер:
134.48 Кб
Скачать

3. Руководство пользователя

3.1. Рекомендуемые требования к аппаратуре.

Процессор: Intel Pentium III и выше

Память: 10Мб

Оперативная память: от 256 Мб

Манипулятор мышь

3.2. Рекомендуемые требования к программному обеспечению.

OC: Windows XP/Vista/7

Платформа .NET 4.0

3.3. Порядок работы с программой.

В работе программы можно выделить 2 направления: создание записей и шифрование.

Создание дневника.

Для начала нужно зарегистрироваться в программе, для этого нажмите Файл – Новый пользователь. Введите логин и пароль. Теперь они сохранены в системе. Совершите вход, нажав Файл – Вход. Введите указанные вами ранее логин и пароль. Нажмите ОК. Затем, чтобы подтвердить свою авторизацию, нажмите Файл – Подтвердить авторизацию. Теперь вас стала доступной часть меню под названием «Дневник». Выбрав Дневник – Новая запись, вы увидите новое окно, в котором можете создать запись, заполнив соответствующие поля и нажав кнопку «Сохранить». При выходе данные не сохраняются. Не забывайте их сохранять перед выходом! Теперь вы можете в любой момент просмотреть сделанные ваши записи, пройдя по пути Дневник – Мой Дневник.

Шифрование

В меню есть пункт «Шифрование», который доступен всем, даже не зарегистрированным в программе пользователям. Интерфейс программы простой, но следует помнить несколько правил: шифруются только строчные буквы, только последовательности цифр, а вместо знака пробела используется символ «_». Кроме того, определитель матрицы шифрования не должен быть равен нулю, т. к. в этом случае обратная матрица для дешифрации не будет существовать.

3.4. Примеры использования программы.

Программу можно использовать как личный дневник, для ведения записей, не предназначенных посторонним лицам. В том числе, в нем можно описывать ход какие-либо разработок, рассуждений, исследований и прочее. Так же программу можно использовать для коллективного обмена записями (в этом случае программа должна быть установлена на компьютере, к которому будут иметь доступ несколько человек), при условии, что все участники обмена будут знать секретные логин и пароль. Для обеспечения лучшей защиты сохраняемую информацию желательно прогонять через шифрующую программу и матрицу шифрования не раскрывать за пределами группы.

И, в конце концов, программу можно использовать как обычный шифратор, не заводя аккаунта в ней.

Пример использования (с обычными и зашифрованными записями)

ЗАКЛЮЧЕНИЕ.

Данная программа позволяет пользователю сохранять свои записи и шифровать их. Кроме того, Secret-Diary может использоваться просто как шифратор без создания аккаунта и входа в систему.

Secret-Diary - отличная программы для тех, кто хочет систематизировать свои заметки, при этом обеспечив конфиденциальность своей информации.

В дальнейшем планируется модернизация программы – добавление в неё новых систем шифрования (для примера таких, как IDEA и RC6), увеличение функциональности при создании записей (возможность оформлять записи разыми шрифтами, вставки картинок и т. д. Так же возможно встраивание функции шифрования двумерных изображений.

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

Список использованной литературы:

1. Кнут, Д.Э. Искусство программирования. В 3 т. Т1. Основные алгоритмы: учеб. пособие [пер. с англ.] / Д.Э. Кнут.- 3-е изд.-М. и др.: Вильямс, 2000. -720 с.

2. Бежанова, М.М. Практическое программирование: структуры данных и алгоритмы: учеб. для вузов / М.М. Бежанова, Л.А. Москвина, И.В. Поттосин.- М.: Логос, 2001. - 223

Приложения.

Код блока шифровки и расшифровки текста.

private void button1_Click(object sender, EventArgs e)

{

flag = true;

richTextBox2.Text = "";

// проверяем, задана ли матрица шифрования

if(

textBox1.Text=="" ||textBox2.Text=="" ||textBox3.Text=="" ||

textBox4.Text=="" ||textBox5.Text=="" ||textBox6.Text=="" ||

textBox7.Text=="" ||textBox8.Text=="" ||textBox9.Text==""

) flag=false;

if (flag)

{

//матрица перевеода и обратная к ней begin

matrp[0, 0] = Convert.ToInt32(textBox1.Text);

matrp[0, 1] = Convert.ToInt32(textBox2.Text);

matrp[0, 2] = Convert.ToInt32(textBox3.Text);

matrp[1, 0] = Convert.ToInt32(textBox4.Text);

matrp[1, 1] = Convert.ToInt32(textBox5.Text);

matrp[1, 2] = Convert.ToInt32(textBox6.Text);

matrp[2, 0] = Convert.ToInt32(textBox7.Text);

matrp[2, 1] = Convert.ToInt32(textBox8.Text);

matrp[2, 2] = Convert.ToInt32(textBox9.Text);

det = matrp[0, 0] * matrp[1, 1] * matrp[2, 2] + matrp[0, 1] * matrp[1, 2] * matrp[2, 0] + matrp[0, 2] * matrp[1, 0] * matrp[2, 1]

- matrp[0, 2] * matrp[1, 1] * matrp[2, 0] - matrp[0, 0] * matrp[2, 1] * matrp[1, 2] - matrp[2, 2] * matrp[1, 0] * matrp[0, 1]; // вычисляем определитель матрицы перехода

if (det != 0) //если определитель не равен 0, находим обратную матрицу

{

int[,] matrvrem = new int[3, 3];

matrvrem[0, 0] = (matrp[1, 1] * matrp[2, 2] - matrp[2, 1] * matrp[1, 2]);

matrvrem[0, 1] = -(matrp[1, 0] * matrp[2, 2] - matrp[2, 0] * matrp[1, 2]);

matrvrem[0, 2] = (matrp[1, 0] * matrp[2, 1] - matrp[2, 0] * matrp[1, 1]);

matrvrem[1, 0] = -(matrp[0, 1] * matrp[2, 2] - matrp[2, 1] * matrp[0, 2]);

matrvrem[1, 1] = (matrp[0, 0] * matrp[2, 2] - matrp[2, 0] * matrp[0, 2]);

matrvrem[1, 2] = -(matrp[0, 0] * matrp[2, 1] - matrp[2, 0] * matrp[0, 1]);

matrvrem[2, 0] = (matrp[0, 1] * matrp[1, 2] - matrp[1, 1] * matrp[0, 2]);

matrvrem[2, 1] = -(matrp[0, 0] * matrp[1, 2] - matrp[1, 0] * matrp[0, 2]);

matrvrem[2, 2] = (matrp[0, 0] * matrp[1, 1] - matrp[1, 0] * matrp[0, 1]);

for (i = 0; i < 3; i++)

for (j = 0; j < 3; j++)

matrob[j, i] = matrvrem[i, j];

for (i = 0; i < 3; i++)

for (j = 0; j < 3; j++)

matrob[i, j] /= det;

//матрица перевеода и обратная к ней end

s = richTextBox1.Text;

sp = 0;

n = 0;

if (!radioButton1.Checked && !radioButton2.Checked)

MessageBox.Show("Не выбрано действие(шифровка/дешифровка)");

if (radioButton1.Checked) // шифрование строки

{

shifr2 = true;

if (s == "") shifr2 = false;

if (shifr2)

{

if (s.Length % 3 != 0) //если кол-во символов в строке не кратно 3, приписываем к ней «-»

do

{

s += '-';

}

while (s.Length % 3 != 0);

matrv = new int[s.Length];

do // непосредственно алгоритм шифрования

{

sv = s.Substring(sp, 3); //считываем по три символа

for (int q = 0; q < 3; q++)

{

matrs[q] = sm.IndexOf(sv[q]) + 1; //в специальный массив заносим номер символа в эталонной строке sm

}

for (i = 0; i < 3; i++)

{

sum = 0;

for (j = 0; j < 3; j++)

{

sum += matrp[i, j] * matrs[j];

}

matrv[n] = sum;

n++;

}

// перемножаем матрицу шифрования и матрицу-столбец из 3х символов. Получаем матрицу-столбец зашифрованного текста

sp += 3;

} while (sp != s.Length);

foreach (object a in matrv)

richTextBox2.Text += a + " ";

}

else MessageBox.Show("А шифровать то нечего!");

// срабатывает, если не записан исходный текст

}

if (radioButton2.Checked) // дешифровка

{

shifr = true;

if (s.Length != 0)

{

for (int d = 0; d < s.Length; d++)

if (sm.IndexOf(s[d]) >= 0) shifr = false;

}

else shifr = false; // проверка символов зашифрованного текста на возможность расшифровки (сравнивая с эталонной строкой)

if (shifr)

{

if (s[s.Length - 1] != ' ') s += ' '; // если последний символ не пробел, добавляем его

sl = "";

int g = 0;

for (int d = 0; d < s.Length; d++) // считаем количество пробелов

if (s[d] == ' ') g++;

matrsh = new int[g]; //создаем массив целочисленных элементов

for (int q = 0; q < s.Length; q++)

{

if (s[q] != ' ')

{

sl += s[q];

}

if (s[q] == ' ' || q == s.Length - 1)

{

matrsh[n] = Convert.ToInt32(sl);

sl = "";

n++;

}

// заносим в него числа из зашифрованного текста

}

matrv = new int[matrsh.Length];

n = 0;

sp = 0;

double sum;

do

{

for (i = 0; i < 3; i++)

{

sum = 0;

for (j = 0; j < 3; j++)

{

sum += matrob[i, j] * matrsh[j + sp];

}

matrv[n] = Convert.ToInt32(sum);

n++;

}

// умножаем матрицу-столбец чисел на матрицу, обратную матрицу шифрования

sp += 3;

} while (sp != matrv.Length);

for (i = 0; i < matrv.Length; i++)

{

if (matrv[i] > 0 && matrv[i] < 35)

richTextBox2.Text += sm[matrv[i] - 1];

else if (matrv[i]!=0)

richTextBox2.Text += sm[Math.Abs(matrv[i] % 33)];

}

// переводим полученный результат в символы

} else MessageBox.Show("Сам расшифровывай такую строку!");

}//radiobaton2.checked

}

else MessageBox.Show("Определитель матрицы = 0,пожалуйста введите другие данные");

}

else MessageBox.Show("Введена неправильная матрица,пожалуйста проверьте правильность введённых данных");