Генератор паролей на языке 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, который позволит сократить количество объектов в памяти.
Читайте также:
как вывести паролей в количестве 20?
Вывести куда?
Вот пример, который создаёт и выводит 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()); }