Вступление
Все люди пользуются интернетом. Или вскоре начнут им пользоватся. А зайдя в интернет они полюбому будут ичпользовать сервисы типа почты, одноклассников, интернет магазинов или вебмани (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