Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

БФИ2203_ОИБ_Лаб№3_Вар№8

.docx
Скачиваний:
0
Добавлен:
02.08.2026
Размер:
89 Кб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций РФ ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования «МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ»

Кафедра «Информационная безопасность»

Отчет по лабораторной работе № 3

по дисциплине «Основы информационной безопасности»

Реализация простейшего генератора паролей»

Вариант № 8

Выполнили:

студенты группы БФИ №2203

Козлова Я.В.

Мячина Л.А.

Москва, 2023 г.

Цель работы: получение основных теоретических сведений и практических навыков по оценке стойкости парольной защиты.

Задача:

1. Вычислить по формуле нижнюю границу S* для заданных

P, V, T.

2. Выбрать некоторый алфавит с мощностью A и получить ми-

нимальную длину пароля L, при котором выполняется условие

.

3. Реализовать программу-генератор паролей пользователей.

Программа должна формировать случайную последовательность

символов длины L, при этом должен использоваться алфавит из A

символов.

Ход работы

Код программы:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Diagnostics.SymbolStore;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Inf_save_3

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

}

private void button2_Click(object sender, EventArgs e)

{

Close();

}

private int Alfavit_kolvo(CheckBox CB1, CheckBox CB2, CheckBox CB3, CheckBox CB4, CheckBox CB5, CheckBox CB6, int alf)

{

if ((!CB1.Checked) && (!CB2.Checked) && (!CB3.Checked) && (!CB4.Checked) && (!CB5.Checked) && (!CB6.Checked))

{

MessageBox.Show("Выберите символы для пароля", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

else

{

if (CB1.Checked)

{

alf += 26;

}

if (CB2.Checked)

{

alf += 26;

}

if (CB3.Checked)

{

alf += 33;

}

if (CB4.Checked)

{

alf += 33;

}

if (CB6.Checked)

{

alf += 10;

}

if (CB5.Checked)

{

alf += 19;

}

}

return alf;

}

private string Alfavit(CheckBox CB1, CheckBox CB2, CheckBox CB3, CheckBox CB4, CheckBox CB5, CheckBox CB6, string alf_str)

{

if (CB1.Checked)

{

alf_str += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

}

if (CB2.Checked)

{

alf_str += "abcdefghijklmnopqrstuvwxyz";

}

if (CB3.Checked)

{

alf_str += "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";

}

if (CB4.Checked)

{

alf_str += "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";

}

if (CB6.Checked)

{

alf_str += "0123456789";

}

if (CB5.Checked)

{

alf_str += "!@#$%^&*()_+-=[]{}|";

}

return alf_str;

}

static double CalculateSLow(double P, double V, double T)

{

if ((P > 1) || (P < 0) || (P == 0))

{

MessageBox.Show("Вероятность не может быть равна нулю, отрицательной или больше единицы", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);

return 0;

}

return (V * T * 1440) / P;

}

static int CalculateL(double S_low, string alf)

{

int power = alf.Length;

int L = 0;

double S = 0;

while (S_low > S)

{

L++;

S = Math.Pow(power, L);

}

return L;

}

public static string GeneratePassword(int length, string characterSet)

{

Random random = new Random();

char[] password = new char[length];

char[] charArray = characterSet.ToCharArray();

for (int i = 0; i < length; i++)

{

password[i] = charArray[random.Next(0, charArray.Length)];

}

return new string(password);

}

private void button1_Click(object sender, EventArgs e)

{

int alf = 0;

string alf_str = "";

double P = Convert.ToDouble(textBox1.Text);

double V = Convert.ToDouble(textBox3.Text);

double T = Convert.ToDouble(textBox4.Text);

double S_low = CalculateSLow(P, V, T);

label8.Text = Convert.ToString(S_low);

label9.Text = Convert.ToString(Alfavit_kolvo(checkBox1, checkBox2, checkBox3, checkBox4, checkBox5, checkBox6, alf));

alf_str = Alfavit(checkBox1, checkBox2, checkBox3, checkBox4, checkBox5, checkBox6, alf_str);

int L = CalculateL(S_low, alf_str);

label10.Text = Convert.ToString(L);

label12.Text = Convert.ToString(GeneratePassword(L, alf_str));

}

}

}

Результат

Вывод: в результате выполнения работы были получены основные теоретических сведений и практических навыков по оценке стойкости парольной защиты.