БФИ2203_ОИБ_Лаб№3_Вар№8
.docxМинистерство цифрового развития, связи и массовых коммуникаций РФ ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования «МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ»
Кафедра «Информационная безопасность»
Отчет по лабораторной работе № 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));
}
}
}
Результат
Вывод: в результате выполнения работы были получены основные теоретических сведений и практических навыков по оценке стойкости парольной защиты.
