Создаём генератор паролей на C#

Cougar

Участник
Статус
offline
Регистрация
07.12.2020
Сообщения
24
Репутация
35
Код и сказ о том как его создать лично мною написаны, поэтому если вы видите недочёты, расскажите мне о них. Мне будет интересно знать, как это можно оптимизировать.
Если ты новичок и хочешь начать программировать, то для начала советую установить Visual Studio Community (17 или 19-о года).

Пока ты используешь Visual Studio Community в не коммерческих целях - он будет для тебя бесплатным.
И так, будем мы писать в консольном приложении, но позже объясню как сделать тоже самое в Windows Forms.

Код начинается с библиотек, нам понадобится всего одна "System", объявляем её (по стандарту она и так будет объявлена, но вдруг вы из тех кто удаляет перед началом работы все библиотеки и пишет только те, которые пригодятся при разработке (я так делаю, извините):
C#:
using System;

Пароль состоит из чего? Буквы (могут быть разного регистра) и цифры. Можно ещё использовать спец. символы, но в нашем примере их не будет.
Мы объявляем массив в котором будут содержаться цифры и все буквы разного регистра. У нас будут только латиница, так как я не приемлю пароли на кириллице.

C#:
string[] arr = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "B", "C", "D", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "V", "W", "X", "Z", "b", "c", "d", "f", "g", "h", "j", "k", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "z", "A", "E", "U", "Y", "a", "e", "i", "o", "u", "y" };

И объявляем переменную в которой будет присвоено значения пароля:
C#:
string iPass = "";

Сейчас эта переменная пуста, но в дальнейшем мы поочерёдно будем заполнять её случайными символами из массива.
Ну и чтобы выбрать случайный индекс массива нам понадобится объявить сам рандом:
C#:
Random rnd = new Random();

Осталось совсем чуть-чуть, теперь мы будем создавать сам пароль с помощью цикла "for":

C#:
for (int i = 0; i < 30; i ++)
    {
    iPass = iPass + arr[rnd.Next(0, 57)];
    }

И так, что же в цикле произошло? Мы объявили нулевую переменную, установили условие "Если i меньше 30-ти - выполнять" и добавили действие которое будет выполнятся по окончанию 1 круга цикла: "i++" - это значит что к переменной i будет прибавляться единица. Если проще говорить, то 30 - это цифра обозначающие количество символов в вашем пароле.

Внутри цикла берётся наша переменная с паролем (на данный момент пустая" и к ней прибавляется содержимое случайной ячейки массива.
arr - это имя нашего массива.
rnd - имя объявлённого нами рандома.
.Next - действия рандома, которая выбирает случайную цифру.
(0, 57) - указали ограничения между каким промежутком выбирать цифру. Промежуток не должен выходить за рамки массива. У нас 58 ячеек в массиве (если считать как нормальный человек, программа же ведёт счёт с нуля), поэтому мы указали от нуля до пятидесяти семи.

Далее выводим полученное в консольное окно:
C#:
Console.WriteLine(iPass);

И чтобы консоль не закрылась сразу после выполнения поставленной задачи поставим ключ:
C#:
Console.ReadKey();

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

C#:
using System;

namespace PasswordGeneration
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] arr = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "B", "C", "D", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "V", "W", "X", "Z", "b", "c", "d", "f", "g", "h", "j", "k", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "z", "A", "E", "U", "Y", "a", "e", "i", "o", "u", "y" };
            string iPass = "";
            Random rnd = new Random();
            for (int i = 0; i < 30; i = i + 1)
            {
                iPass = iPass + arr[rnd.Next(0, 57)];
            }
            Console.WriteLine(iPass);
            Console.ReadKey();
        }
    }
}

Перенести это в Windows Forms не сложно, убираем консольные команды:
C#:
Console.WriteLine(iPass);
Console.ReadKey();

Массив выбрасываем после инициализации куда вашей душе угодно, а всё остальное закидываем в любой обработчик, например кнопку.
Вывести полученное можно в label или textBox, да и вообще в любое место где есть текст, даже в название формы.

На этом всё, немного покодили, но если вы часто меняете пароли от своих профилей, то обзавестить своим генератором не помешает)

Я собираюсь сделать кое-что интересное с этим генератором паролей, и как только закончу сразу солью разработку вам ;3
 

MaxKorob

Новичок
Статус
offline
Регистрация
26.10.2020
Сообщения
1
Репутация
0
Простой генератор можно написать на Python, и быстрее получается и легче и пароли сложные. Хотя для кого как, если не знать Питон, то возможно покажется сложным.