27 марта 2010 г.

Программа генерации паролей

Сегодня предлагаю Вашему вниманию очередную небольшую готовую программу. С её помощью пользователь сможет сгенерировать себе пароль по заданным параметрам (длина и используемые символы).





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

Полный код программы:

<?php
 
$window = new GtkWindow();
$window->set_position(Gtk::WIN_POS_CENTER);
$window->set_title('Генератор паролей');
$window->set_size_request(400, -1);
$window->connect_simple('destroy', array('Gtk', 'main_quit'));
 
$vbox = new GtkVBox();
 
$vbox->pack_start($hbox = new GtkHBox(), FALSE, FALSE);
$hbox->pack_start(new GtkLabel('Количество символов: '), FALSE, FALSE);
$hbox->pack_start($count = GtkSpinButton::new_with_range(1, 100, 1), FALSE, FALSE);
 
$vbox->pack_start($hbox = new GtkHBox(), FALSE, FALSE);
$hbox->pack_start(new GtkLabel('Используемые символы: '), FALSE, FALSE);
$hbox->pack_start($up = new GtkCheckButton('A-Z', TRUE));
$up->set_active(TRUE);
$up->set_tooltip_text('Использовать в пароле латинские буквы в верхнем регистре');
$hbox->pack_start($lower = new GtkCheckButton('a-z', TRUE));
$lower->set_tooltip_text('Использовать в пароле латинские буквы в нижнем регистре');
$hbox->pack_start($int = new GtkCheckButton('0-9', TRUE));
$int->set_tooltip_text('Использовать в пароле цифры');
 
$vbox->pack_start($btn = new GtkButton('Генерировать'), FALSE, FALSE);
$btn->set_tooltip_text('Сгенерировать новый пароль по заданным условиям');
 
$vbox->pack_start($hbox = new GtkHBox(), FALSE, FALSE);
$hbox->pack_start(new GtkLabel('Полученный пароль: '), FALSE, FALSE);
$hbox->pack_start($psw = new GtkEntry(), TRUE, TRUE);
 
$btn->connect_simple('clicked', 'generating', $count, $up, $lower, $int, $psw);
 
$window->add($vbox);
$window->show_all();
Gtk::main();
 
function generating($count, $up, $lower, $int, $psw)
{
$cnt = $count->get_value();
if (empty($cnt))
{
$cnt = 10;
}
 
$dict = array();
if ($up->get_active() === TRUE)
{
for ($i = 65; $i <= 90; $i++)
{
$dict[] = chr($i);
}
}
if ($lower->get_active() === TRUE)
{
for ($i = 97; $i <= 122; $i++)
{
$dict[] = chr($i);
}
}
if ($int->get_active() === TRUE)
{
for ($i = 0; $i <= 9; $i++)
{
$dict[] = $i;
}
}
 
$password = '';
for ($i = 0; $i <= $cnt - 1; $i++)
{
$symbol = rand(0, count($dict) - 1);
$password .= $dict[$symbol];
}
$psw->set_text($password);
}
 
?>

Комментариев нет: