Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.07;
Скачать: CL | DM;

Вниз

Генератор паролей   Найти похожие ветки 

 
DJ X   (2002-01-18 08:05) [0]

Как сделать генератор паролей, который по строке текста будет генирировоть численно-буквенную последовательность (как в генераторе паролей WinZip"а 8)


 
Rem   (2002-01-18 10:29) [1]

Эта "численно-буквенная" последовательность надывается хэш-кодом. Для генерации таких кодов лучше использовать Crypto APY (является частью Windows). Функций там много, но я посоветовал бы отталкиваться от CryptCreateHash()


 
Johnny Smith   (2002-01-18 11:45) [2]

Можешь написать сам такую функцию.
Идея такова: берешь последовательно ASCII-коды цифр(букв), и перемножаешь их (или еще-как нибудь мудришь).


 
DJ X   (2002-01-19 15:49) [3]

Rem, а если поподробней.


 
Феликс   (2002-01-20 00:30) [4]

Пароль создаётся из символов, содержащихся в таблице.
Внимание:
Длина пароля должна быть меньше, чем длина таблицы!

// запускаем генератор случайных чисел (только при старте приложения).
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 begin // цикл для создания K символов
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;



 
DJ X   (2002-01-20 18:44) [5]

Большое спасибо, Феликс. Так держать!


 
Rem   (2002-01-21 15:47) [6]

2Феликс, DJ X
Какой вопрос, такой ответ...
Речь ведь шла о генерации последовательности на основе строки текста?


 
Феликс   (2002-01-22 01:00) [7]

Большое спасибо это типа ирония? Тебе пример показывает как подойти к решению проблемы, а как решить твою проблему ты должен додуматься сам. Никто не говорит, что думать это просто, но все же.....


 
DJ X   (2002-01-22 11:26) [8]

Никакой иронии - от чистого сердца!



Страницы: 1 вся ветка

Текущий архив: 2002.02.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
14-18966
Orest
2001-12-18 19:55
2002.02.07
Socrat(переводчик) ну помогите мне найти его!!!


3-18782
Realy_Grey
2002-01-14 13:53
2002.02.07
где Oracle хранит список таблиц?


14-18979
phantom2040
2001-12-18 13:32
2002.02.07
CGI программа на Delphi под Unix


1-18866
Smok_er
2002-01-22 04:49
2002.02.07
Как вызвать процедуру после полного отображения главной формы?


14-18962
yuger
2001-12-17 16:39
2002.02.07
Как правильно организовать Trial версию программы?