Немного о идее

Сегодня исходники по C# скачать бесплатно практически не возможно. Но мне пришла идея разместить исходники программ, что я делал в универе, здесь на сайте. Скачать можно с файлообменника, просто нужно подождать минуту - и вуааля - скачивайте и сдавайте вашему преподавателю, или эксперементируйте с исходниками... Оставляйте комментарии или давайте идеи - буду пробовать написать и выложить исходники. Также планирую в дальнейшем выложить для скачивания исходники по C++. Вообщем пожелайте мне удачи. :)

вторник, мая 18, 2010

Генератор паролей RNGCryptoServiceProvider

Вступление

Все люди пользуются интернетом. Или вскоре начнут им пользоватся. А зайдя в интернет они полюбому будут ичпользовать сервисы типа почты, одноклассников, интернет магазинов или вебмани (web money). А здесь везде и всюду нужно вписывать свой пароль. А надежный пароль сходу так и не придумаешь. Но если пароль не надежен, то и система где его используют не может считатся надежной.

Надежным пароль считается, когда он:
 - не состоит из простых слов типа "pavel", "armagedon" и др.
 - содержит цифры,
 - содержит знаки препинания,
 - содержит большие и маленькие буквы.

Вот мне и пришла идея использовать стандартные средства C#, что-бы сделать простой генератор паролей. Все преимущества такой программы налицо - нажал на кнопочку - вот тебе надежный пароль, притом в программе можно выбрать любую длину. Потом можно записать его куда-нибудь в надежное место, или просто скинуть в блокнот себе на компе, а файл для надежности закодировать.

Общая инфа

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

Программа выглядит следующим образом:


Все просто - выбираем длину пароля и жмем "Roll Dice".

Программный код (исходники)

Form1.cs

using System;
using System.Windows.Forms;

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

        private void button1_Click_1(object sender, EventArgs e)
        {
            if (Convert.ToInt32(textBox2.Text) < 35)
            {
                try
                {
                    textBox1.Clear();
                    byte[] temp = Generator.RollDice(Convert.ToInt32(textBox2.Text));
                    for (int i = 0; i < temp.Length; i++)
                    {
                        textBox1.Text += (char)temp[i];
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            else
                MessageBox.Show("Введите число меньше 35!!!");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            textBox2.Text = "16";
        }
    }
}

Мы вызываем метод RollDice() класса Generator. Програмный код этого класса:

Generator.cs

using System.Security.Cryptography;

namespace Char_generator_for_VS2008
{
    class Generator
    {
        public static byte[] RollDice(int passLenght)
        {
            byte[] randomNumber = new byte[passLenght];
            byte[] password = new byte[passLenght];


            // Create a new instance of the RNGCryptoServiceProvider.
            RNGCryptoServiceProvider Gen = new RNGCryptoServiceProvider();

            // Fill the array with a random value.
            Gen.GetBytes(randomNumber);

            for (int i = 0; i < randomNumber.Length; i++)
            {
                if ((int)randomNumber[i] > 48 && (int)randomNumber[i] < 57 ||
                    (int)randomNumber[i] > 65 && (int)randomNumber[i] < 90 ||
                    (int)randomNumber[i] > 97 && (int)randomNumber[i] < 122)
                {
                    password[i] = randomNumber[i];
                }
                else
                {
                    Gen.GetBytes(randomNumber);
                    i--;
                }
            }
            return password;
        }
    }
}

Логика следующая:
- Генерируем число от 0 до 256
- Если сгенерированное число входит в интервалы
от 48 до 57,
от 65 до 90 и
от 97 до 122,
сохраняем его в текстбокс.
В противном случае снова генерируем число от 0 до 256.

Скачать исходники можно здесь - http://upload.com.ua/get/901646946/
или здесь - http://rapidgator.net/133533/Char_generator_for_VS2008.rar.html

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

WIRTEL комментирует...

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

Сам генератор естественно в онлайн — http://psw.wirtel.ru/

Вся система основана на тэгах, вводятся статистические и динамические тэги.

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

Затем всё просто надо знать схему тэгов и можно спокойно восстанавливать сложные пароли.

Анонимный комментирует...

Спасибо! На основе этого я сделал свой генератор паролей!))))))