Генератор паролей на языке c#

Генератор паролей на языке c#

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

Принцип работы программы генератор паролей прост, есть несколько массивов, в каждом из них храниться определенный диапазон значений, например:

List<char> upperCase = new List<char> {'A', 'B', 'C', 'D' ...};
List<char> lowerCase = new List<char> {'a', 'b', 'c', 'd', ...};
List<char> Symbols = new List<char> {'@', '$', '#', '*', ...};

Затем при помощи класса Random, можно будет получить случайные значения каждого массива, сложив которые получим пароль. Либо можно создать один массив и разбить хранящиеся в нём значения на диапазоны, например от 0-26 будут занимать большие буквы, от 27-53 маленькие и так далее.

Чтобы облегчить себе задачу и не заполнять коллекции вручную можно использовать код из предыдущей статьи c# и Unicode, который сам заполнит листы нужными значениями, либо сделать ещё проще и вовсе обойтись без массивов.

Для этого создадим новое Windows Forms приложение, после чего поместим на форму два элемента управления: TextBox и Button.

namespace Test
{
public partial class Form1 : Form
{
//генератор случайных чисел
Random rnd = new Random();
StringBuilder str = new StringBuilder(8);
//несколько символов: #-35, $-36, %-37, &-38, *-42, @-64
List<int> Symbols = new List<int> {35, 36, 37, 38, 42, 64};
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
str.Clear();
for (int i = 0; i  2; i++)
{
str.Append (((char)rnd.Next(48, 59)).ToString() +
(char)rnd.Next(65, 92)  +
(char)rnd.Next(97, 124) +
(char)Symbols[rnd.Next(0, 6)]);
}
textBox1.Text = str.ToString();
}
}
}
//Результат: 1Fu@9Ez#

Строка (char)rnd.Next(48,59) приведена лишь для демонстрации, вместо неё можно спокойно использовать строку rnd.Next(0,10) результат будет тот же.

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

rnd.Next(0,1)  //0
rnd.Next(0,2) //0 и 1

Так как значения строк будут постоянно изменяться, лучше использовать
класс StringBuilder, который позволит сократить количество объектов в памяти.

Читайте также:

2 комментария

  1. Вывести куда?

    Вот пример, который создаёт и выводит 20 паролей в control listBox.

    private void button1_Click(object sender, EventArgs e)
    {
    for (int k = 0; k < 20; k++)
    {
    str.Clear();
    for (int i = 0; i < 2; i++)
    {
    str.Append(((char)rnd.Next(48, 59)).ToString() +
    (char)rnd.Next(65, 92) +
    (char)rnd.Next(97, 124) +
    (char)Symbols[rnd.Next(0, 6)]);
    }
    listBox1.Items.Add(str.ToString());
    }

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *