Генератор паролей на языке 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.