Пишем простой генератор паролей на C#

Прочитав этот совет, вы сможете написать простой генератор паролей на С#.


Дата: 17.03.2010 г.

Рейтинг: 0

Метки: генератор паролей, C#

Вот так это будет выглядеть: Пишем простой генератор паролей на C#

Создаем новый проект WindowsFormsApplication и добавляем на форму: 2-а textBox, 4-и checkBox, один numericUpDown и одну кнопку (button). Размещаем компоненты на форме, так как вам нравиться, с соблюдением логики приложения.

Вопрос о оформлении компонентов не рассматриваться т.к. эта тема именно в данном контексте является очень простой и я считаю, что лучше уделить внимание коду.

Теперь пишем код в кнопке:

Первым делом необходимо сформировать словарь из которого будут генерироваться пароли, для этого пишем такой код:            string dic = "";
            string tmp = "";
            if (checkBox1.Checked)
            {
                char nchar;
                for (int i = 65; i < 91; i++)
                {
                    nchar = (char)i;
                    tmp += Convert.ToString(nchar);
                }
                dic += tmp;
            }
            if (checkBox2.Checked) dic += "0123456789";
            if (checkBox3.Checked) dic += textBox2.Text;  
            if (checkBox4.Checked)
            {
                tmp = "";
                char nchar;
                for (int i = 97; i < 123; i++)
                {
                    nchar = (char)i;
                    tmp += Convert.ToString(nchar);
                }
                dic += tmp;
            }

Думаю что принцип использования условий и циклов вопросов не вызовет, но при этом наверное следует пояснить смысл использования переменной nchar. В эту переменную мы будем писать значения из ASCII-таблицы.

Теперь сам генератор:

string pass = "";
            Random mran = new Random();
            for (int i = 0; i < numericUpDown1.Value; i++)
            {
                int index = Convert.ToUInt16(mran.NextDouble() * dic.Length) % dic.Length;
                char ScharS = dic[index];
                pass += Convert.ToString(ScharS);  
            }
            textBox1.Text = pass;

Здесь можно разобрать подробно:

Объявляем переменную пароля: string pass = "";

Объявляем переменную генератора случайных чисел:Random mran = new Random();

Цикл от 0 до numericUpDown1.Value, заданное на форме количество символов в пароле:for (int i = 0; i < numericUpDown1.Value; i++)

Объявляем переменную и назначаем значение соответствующее случайному числу из промежутка от 0 до dic.Length, то есть длинны словаря: int index = Convert.ToUInt16(mran.NextDouble() * dic.Length) % dic.Length;

Объявляем переменную и назначаем значение соответствующего символу в словаре, стоящем под номером index:char ScharS = dic[index];

Добавляем сгенерированный символ к паролю:pass += Convert.ToString(ScharS);  

Выводим значение переменной pass в текстовое поле на форме:textBox1.Text = pass;

Полный текст:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string dic = "";
            string tmp = "";
            if (checkBox1.Checked)
            {
                char nchar;
                for (int i = 65; i < 91; i++)
                {
                    nchar = (char)i;
                    tmp += Convert.ToString(nchar);
                }
                dic += tmp;
            }
            if (checkBox2.Checked) dic += "0123456789";
            if (checkBox3.Checked) dic += textBox2.Text;  
            if (checkBox4.Checked)
            {
                tmp = "";
                char nchar;
                for (int i = 97; i < 123; i++)
                {
                    nchar = (char)i;
                    tmp += Convert.ToString(nchar);
                }
                dic += tmp;
            }
            string pass = "";
            Random mran = new Random();
            for (int i = 0; i < numericUpDown1.Value; i++)
            {
                int index = Convert.ToUInt16(mran.NextDouble() * dic.Length) % dic.Length;
                char ScharS = dic[index];
                pass += Convert.ToString(ScharS);  
            }
            textBox1.Text = pass;
        }
    }
}

Удачных проб, с уважением Сургай Владимир.




Похожие статьи: