Генератор паролей
Приднестровский государственный университет им. Т.Г. Шевченко
Инженерно-технический институт
Кафедра “Программное обеспечение вычислительной техники
и автоматизированных систем”
КУРСОВАЯ РАБОТА
по предмету
«Программирование на языке высокого уровня»
Тема: «Генератор паролей»
Выполнил студент гр. № 10 ПОВТ
Руководитель, к.т.н., доцент
Столяренко Юлия Александровна
Тирасполь, 2011
СОДЕРЖАНИЕ
ВВЕДЕНИЕ |
3 |
ЦЕЛИ И ЗАДАЧИ |
4 |
АЛГОРИТМ ПРОГРАММЫ |
5 |
СТРУКТУРА ПРОГРАММЫ |
6-11 |
ОТЛАДКА ПРОГРАММЫ И ПРИМЕР |
12-14 |
ВЫВОДЫ |
15 |
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ |
16-17 |
ВВЕДЕНИЕ
Основной целью данной курсовой работы является создание программы генерации паролей. Данная программа является актуальной в наши дни, так как с развитием мировой сети и количеством информации, получаемой из Интернета, увеличился и риск «взлома аккаунта», или дополнительной ащиты информации. Новизна работы состоит в том, что при использовании «Генератора паролей» пользователь может выбирать не только сложность, символику и длину генерируемого пароля, но и использовать так называемую «смешанную методику», то есть генерировать пароли с помощью цифр, букв и прочих символов одновременно. К тому же «Генератор» предоставляет несколько вариаций сгенерированного пароля, что позволяет сократить до минимума риск совпадения паролей после генерации.
Все уже созданное программное обеспечение является платным, или условно платным, что лишает программное обеспечение определенных функций. Все программы снабжены не нужным набором функций.
ЦЕЛИ И ЗАДАЧИ
Целью данной работы является создание программы, генерирующей пароли любой длины и сложности. Основной задачей данной программы является создание пароля, который обеспечит максимальную защиту информации или аккаунта пользователя. И впоследствии приобретение практических навыков, связанных с поиском и анализом информации, реализацией созданных ранее наработок, а также:
- разработок:
- структур систем программного обеспечения;
- структур используемых данных;
- тестовых данных и стратегии тестирования;
- алгоритмов и программ для их реализации с использованием современной технологиями программирования;
2)отладки интерактивных систем программного обеспечения;
3)составления пояснительной записки для описания функциональных возможностей и сопровождения разработанной системы.
АЛГОРИТМ РАБОТЫ ПРОГРАММЫ
БЛОК СХЕМА
СТРУКТУРА ПРОГРАММЫ
Программа генерации пароля состоит из пяти основных блоков:
1.Ввод символов с клавиатуры, и заполнение массива.
2.Предстовление в двоичном виде ранее записанного массива, и запись нового массива.
3.Логичиские операция типа xor.
4.Проверка дополнительных параметров, генерация символов и анализ результатов.
5.Наложение ограничений на вводимы параметры.
Рассмотрим детально каждый блок программы:
1) ввод символов с клавиатуры и заполнение одномерного массива типа String данными символами:
String[] str = new String[textBox1.Text.Length]; //запись в текстбокс вводимых символов
int i, j, k1 = 0, k = Convert.ToInt16(textBox1.Text.
for (i = 0; i < textBox1.Text.Length; i++)//заполнение массива типа стринг
str[i] = textBox1.Text[i].ToString();
2)представление в двоичном виде ранее записанного массива данных и заполнение очередного массива типа INT:
for (i = 0; i < k; i++)
{
//в техтбокс записываю 2-ый код символов
textBox3.AppendText(Convert.
//textBox2.AppendText(Convert.
//создаю массив типа инт куда буду записывать 2-ый код введеных символов
int[] mas = new int[textBox3.Text.Length];
//заполняю массив типа инт
for (i = 0; i < textBox3.Text.Length; i++)
{ mas[i]= Convert.ToInt16(Convert.
textBox4.AppendText(Convert.
3) создание массива типа INT, в котором представлен результат логических операции типа “xor”:
//создаю новый массив для операции хоr
int[] mas1 = new int[textBox3.Text.Length * textBox3.Text.Length];
//сами операции типа xor и их запись в новый массив
for (i = 0; i < textBox3.Text.Length; i++)
{
for (j = 0; j < textBox3.Text.Length - 1; j++){
mas1[k1] = (mas[i]) ^ (mas[j]);
// textBox5.AppendText(Convert.
k1++;
}
}
k1--;
4) выявление количества и параметров генерируемых паролей, генерация символов и анализ результатов:
//в даном блоке выполняю : 1) создаю новый массив для записи 2ого кода после лог-их оперцации
//2) ввожу доп переменные длины, куда считываю кол-во символов отведеных на пароль и кол-во самих паролей
//3)генерация новых символов,
их проверка( удовлетворяет ли
наш символ выбраным
// вывод даного символа в листбокс
и генерация нового символ
Random rnd = new Random();
string[] str1 = new string[mas1.Length];
int k2 = 0, k3, k4 = 0, dlina,q=0;
dlina = int.Parse(textBox5.Text);
k3 = Convert.ToInt16(textBox8.Text)
while (q < dlina)
{
q++;
k4 = 0;
textBox2.Text = "";
while (k4 < k3)
{
k2 = 0;
for (i = 0; i < rnd.Next(2) + 6; i++)
{
str1[k2] = Convert.ToString(mas1[rnd.
if (i % 7 == 0)
{
if (Convert.ToInt16(str1[i]) == 0)
str1[0] = Convert.ToString(1);
}
k2++;
}
int p, p1 = 0, p2;
p = int.Parse(textBox6.Text);
for (i = 33; i < 126; i++)
{
textBox7.Text = Convert.ToString(Convert.
p2 = int.Parse(textBox7.Text);
if (p == p2)
{
p1 = i;
}
}
if (checkBox1.Checked == true && checkBox2.Checked == true && checkBox3.Checked == true && checkBox4.Checked == true)
{
if (p1 >= 33 && p1 <= 126)
{
k4++;
}
}
else if (checkBox1.Checked == true && checkBox2.Checked == true && checkBox4.Checked == true)
{
if (p1 >= 97 && p1 <= 122 || p1 >= 33 && p1 <= 47 || p1 >= 58 && p1 <= 64 || p1 >= 91 && p1 <= 96 || p1 >= 123 && p1 <= 126 || p1 >= 65 && p1 <= 91)
{
k4++;
}
}
else if (checkBox1.Checked == true && checkBox2.Checked == true && checkBox3.Checked == true)
{
if (p1 >= 48 && p1 <= 57 || p1>=65&& p1<=90 ||p1>=97&&p1<=122)
{
k4++;
}
}
else if(checkBox1.Checked==true&&
{
if (p1 >= 97 && p1 <= 122 || p1 >= 33 && p1 <= 47 || p1 >= 58 && p1 <= 64 || p1 >= 91 && p1 <= 96 || p1 >= 123 && p1 <= 126||p1>=48&&p1<=57)
{
k4++;
}
}
else if (checkBox2.Checked == true && checkBox3.Checked == true && checkBox4.Checked == true)
{
if (p1 >= 65 && p1 <= 90 || p1 >= 33 && p1 <= 47 || p1 >= 58 && p1 <= 64 || p1 >= 91 && p1 <= 96 || p1 >= 123 && p1 <= 126 || p1 >= 48 && p1 <= 57)
{
k4++;
}
}
else if (checkBox1.Checked == true && checkBox2.Checked == true)
{
if (p1 >= 65 && p1 <= 90 || p1 >= 97 && p1 <= 122)
{
k4++;
}
}
else if (checkBox1.Checked == true && checkBox3.Checked == true)
{
if (p1 >= 48 && p1 <= 57 || p1 >= 97 && p1 <= 122)
{
k4++;
textBox2.AppendText(Convert.
}
}
else if(checkBox1.Checked==true&&
{
If
(p1 >= 97 && p1 <=
2||p1>=33&&p1<=47||p1>=58&&p1<
{
k4++;
textBox2.AppendText(Convert.
}
}
else if (checkBox2.Checked == true && checkBox3.Checked == true)
{
if (p1 >= 48 && p1 <= 57||p1>=65&&p1<=90)
{
k4++;
}
}
else if (checkBox2.Checked == true&& checkBox4.Checked == true)
{
if (p1 >= 65 && p1 <= 90 || p1 >= 33 && p1 <= 47 || p1 >= 58 && p1 <= 64 || p1 >= 91 && p1 <= 96 || p1 >= 123 && p1 <= 126 )
{
k4++;
}
}
else if (checkBox3.Checked == true && checkBox4.Checked == true)
{
if (p1 >= 33 && p1 <= 47 || p1 >= 58 && p1 <= 64 || p1 >= 91 && p1 <= 96 || p1 >= 123 && p1 <= 126 || p1 >= 48 && p1 <= 57)
{
k4++;
}
}
else if (checkBox1.Checked == true)
{
if (p1 >= 97 && p1 <= 122)
{
k4++;
}
}
else if (checkBox2.Checked == true)
{
if (p1 >= 65 && p1 <= 90 )
{
k4++;
}
}
else if (checkBox3.Checked == true)
{
if (p1 >= 48 && p1 <= 57)
{
k4++;
}
}
else if (checkBox4.Checked == true)
{
if (p1 >= 33 && p1 <= 47 || p1 >= 58 && p1 <= 64 || p1 >= 91 && p1 <= 96 || p1 >= 123 && p1 <= 126)
{
k4++;
}
}
textBox6.Text = "";
}
listBox1.Items.Add(textBox2.
}
5) наложение ограничений на вводимые параметры и ввод дополнительных функций:
// выход из пр-мы
private void выходToolStripMenuItem_Click(
{
this.Close();
}
//справка для пользователей
private void очисткаToolStripMenuItem_
{
MessageBox.Show("Здесь вы
}
//очистка всех текстбоксов, блокировка кнопки старт и очистка чек боксов, открытие полей для ввода новых символов
private void справкаОПрограмеToolStripMenuI
{
this.textBox1.Text = "";
this.textBox2.Text = "";
this.textBox3.Text = "";
this.textBox4.Text = "";
this.textBox5.Text = "";
this.textBox6.Text = "";
this.textBox7.Text = "";
this.textBox8.Text = "";
listBox1.Items.Clear();
button1.Enabled = false;
checkBox4.Checked = false;
checkBox3.Checked = false;
checkBox2.Checked = false;
checkBox1.Checked = false;
listBox1.Visible = false;
label2.Visible = false;
textBox8.Enabled = true;
textBox5.Enabled = true;
textBox1.Enabled = true;
}
//проверка на правильность и корректность ввода с последующей разблокировкой кнопки, если все поля заполнены
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox8.TextLength != 0 && textBox1.TextLength
!= 0&&textBox5.TextLength!=0&&(
button1.Enabled = true;
}
private void textBox8_TextChanged(object sender, EventArgs e)
{
if (textBox8.TextLength != 0 && textBox1.TextLength != 0 && textBox5.TextLength != 0 && (checkBox1.Checked == true || checkBox2.Checked == true || checkBox3.Checked == true || checkBox4.Checked == true))
button1.Enabled = true;
if(textBox8.TextLength!=0)
{
// ограничение на кол-во выводимых символов
if (Convert.ToInt16(textBox8.
{
}
else
{
MessageBox.Show(" ограничение на кол-во выводимых символов не меньше 1 и не больше 16",”Ошибка”);
textBox8.Text = "";
}
}
}
//ограничение на ввод символов в указаные поля в поля 1 2, чтобы вводились лишь цифры в 3 любые символы
private void _8_5_1(object sender, KeyPressEventArgs e)
{
TextBox tx = sender as TextBox;
if (tx.TabIndex == 13)
{
if (!Char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
if (tx.TabIndex == 5)
{
if (!Char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
// Ограничение на строку вводимых символов
// if (textBox1.TextLength > 3)
// e.Handled = true;
}
//проверка на правильность и коректность ввода с последующим разблокировкой кнопки если все поля заполнены
private void textBox5_TextChanged(object sender, EventArgs e)
{
if (textBox8.TextLength != 0 && textBox1.TextLength != 0 && textBox5.TextLength != 0 && (checkBox1.Checked == true || checkBox2.Checked == true || checkBox3.Checked == true || checkBox4.Checked == true))
button1.Enabled = true;
}
//проверка на правильност
ьи коректность ввода с
private void _1_2_3_4(object sender, EventArgs e)
{
if (textBox8.TextLength != 0 && textBox1.TextLength != 0 && textBox5.TextLength != 0 && (checkBox1.Checked == true || checkBox2.Checked == true || checkBox3.Checked == true || checkBox4.Checked == true))
button1.Enabled = true;} }}
ОТЛАДКА ПРОГРАММЫ И ПРИМЕР
Для начала пользователь указывает количество символов в пароле, на ввод данного параметра наложено ограничение, количество символов в пароле можно представить от одной до шестнадцати цифр, на количество выводимых паролей и ввод текста с клавиатуры ограничения не наложены. В качестве исходной информации пользователь может ввести любой произвольный текст (или символ), ограничение есть, и оно обусловлено пределами размера того или иного типа данных. После заполнения данных полей, пользователь должен указать какие символы он хочет видеть в своем пароле, каждый параметр задается отдельным образом, но возможна и комбинирование параметров. Лишь после того, как будут заполнены все поля и все параметры кнопка “start” разблокируется, и пользователь сможет получить результат действия данной программы.
Пример:
Предположим, пользователь вводит с клавиатуры символы “6Ux.”. Данные символы записываются в массив “str” (каждому i-тому элементу массива соответствует i-ый элемент). Так например str[0]=6, str[1]=U, str[2]=x str[3]=.) с, после данные символы переводим в двоичную систему и записываем в отдельный текст бокс, далее создаем массив “mas” и записываем каждый 0 или 1 в отдельности (в двоичном виде наши Элементы выглядят так: 6=110110, U=1010101, x=1111000, .=101110, если брать массив целиком то mas[1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0] ), после того как мы получили 2-ое представление введенного ранее текста, мы совершаем логические операции типа “xor” и результат данных операции записываем в массив mas1(размерность массива mas1[0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 ]) далее из данного массива мы получаем любой Элемент и формируем новый символ, далее идет проверка, удовлетворяет ли наш полученный символ заданным ранее параметрам, если да, то выводим наш символ в listBox если нет продолжаем поиски нужного символа, когда кол-во полученных символов станет равно длине пароля мы переходим на новый виток цикла (если оно того требует) в случае если пользователь генерировал один пароль, или же сгенерировались все пароли программа завершается. Например, пользователь указал длину пароля 5, количество паролей 5 и указал в дополнительных параметрах, что в пароле должны быть лишь маленькие буквы; он получит следующие пароли: gxgnb vgpfc tyelb jrlhh lfdxe.Если бы пользователь указал комбинацию из нескольких параметров, он получил бы другой набор паролей и при повторном запуске данной программы вероятность, что программа сгенерирует точно такие же пароли крайне мала (лично у меня не совпадало еще ни разу), таким образом при выполнении поставленной задачи я свел к минимуму вероятность того, что программа сгенерирует одинаковые пароли, следовательно, возможность простого «угадывания» данного пароля практически равна нулю.
Также можно выбрать наиболее понравившийся вам пароль из списка предложенных, но для этого вам придется задать диапазон шире.
В данной программе я
также использовал
ВЫВОДЫ
В результате проведенной курсовой работы у меня получилось реализовать актуальную, мобильную и удобную программу, доступную всем пользователям и несложную в управлении. Мне также удалось закрепить практические навыки получения и анализа информации, работы с данными.
Я считаю, что реализованный мной продукт удовлетворит требованиям любого пользователя, а пароли, которые генерирует программа, защитят ваши аккаунты и другую информацию.
Считаю, что данная работа будет интересна начинающим программистам, а программа станет полезной для пользователей, нуждающихся в помощи при создании паролей.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ:
- www.intuit.ru –Перевод в двоичную систему счислений.
- Герберт Шилдт «C# 4.0 полное руководство», 2011.
- Мартынов Н.Н «С# для начинающих»,2007.
private void GenButton_Click(object sender, EventArgs e)
{
int pl = stringtoint(passlength.Text.
string pass = "";//переменная для пароля(можно не использовать, это для простоты восприятия, по уму пишется прямо в password.Text)
Random rand = new Random();//рандомайзер
for (int i = 0; i < pl; i++)
{
int what = rand.Next(3);//рандом на вид(цифра/пропись/строчная)
char s=' ';
if (what == 0)
{
int r = rand.Next(9);//рандом на числа
s = (char)(r + 48);//преобразуем число в символ;
}
else
{
int r = rand.Next(25);//рандом на буквы
if (what == 1)
{
s = (char)(r + 65);//преобразуем число в прописную букву
}
else
{
s = (char)(r + 97);//преобразуем число в строчную букву
}
}
pass += s;
}
password.Text = pass;
password.Visible = true;//делаем поля видимыми
label3.Visible = true;
copybutton.Visible = true;
savebutton.Visible = true;
}

- Генератор пачек импульсов
- Генератор переменного тока
- Генератор переменного тока автомобиля. Устройство, принцип работы, неисправности и ремонт
- Генератор пилообразного напряжения
- Генератор последовательности чисел
- Генератор посылки
- Генератор сигналов специальной формы
- Генеральный план фермы
- Генеральный план цеха насосной станции
- Генератор «емкостная трехточка»
- Генератор импульсных напряжений
- Генератор кода Морзе
- Генератор кодового слова «Дима»
- Генератор кодов последовательных чисел