Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

Видеокурс программиста и крэкера 5D 2O17
(актуальность: октябрь 2O17)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Как сгенерировать случайный пароль

Автор: Kurt Mueller

Чем хакер отличается от юзера? Хакер подбирает пароль с третьего раза, а юзер набирает с пятого.

Вам понадобилось, чтобы Ваше приложение само создавало пароли ? Возможно данный способ Вам пригодится. Всё очень просто: пароль создаётся из символов, выбираемых случайным образом из таблицы.

Пароль создаётся из символов, содержащихся в таблице.

Внимание:

Длина пароля должна быть меньше, чем длина таблицы!

Запускаем генератор случайных чисел (только при старте приложения).


 procedure TForm1.FormCreate(Sender: TObject);
 begin
   Randomize;
 end;
 

Описываем функцию:


 function RandomPwd(PWLen: integer): string;
 // таблица символов, используемых в пароле
 const StrTable: string =
   '!#$%&/()=?@<>|{[]}\*~+#;:.-_' +
     'ABCDEFGHIJKLMabcdefghijklm' +
     '0123456789' +
     'ДЦЬдцьЯ' +
     'NOPQRSTUVWXYZnopqrstuvwxyz';
 var
   N, K, X, Y: integer;
 begin
   // проверяем максимальную длину пароля
   if (PWlen > Length(StrTable)) then
     K := Length(StrTable)-1
   else
     K := PWLen;
   SetLength(result, K);              // устанавливаем длину конечной строки
   Y := Length(StrTable);             // Длина Таблицы для внутреннего цикла
   N := 0;                            // начальное значение цикла
 
   while N < K do                     // цикл для создания K символов
   begin
     X := Random(Y) + 1;              // берём следующий случайный символ
     // проверяем присутствие этого символа в конечной строке
     if (pos(StrTable[X], result) = 0) then
     begin
       inc(N);                        // символ не найден
       Result[N] := StrTable[X];      // теперь его сохраняем
     end;
   end;
 end;
 

Ну и обработчик нажатия кнопки будет выглядеть так:


 procedure TForm1.Button1Click(Sender: TObject);
 var
   cPwd: string;
 begin
   // вызываем функцию генерации пароля из 30 символов
   cPwd := RandomPwd(30);
   // ...
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS