Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.005 c
14-18968
panov
2001-12-19 08:11
2002.02.07
Рассудите :-) Мы по прежнему будем считать других ламерами или ..


14-18960
SP
2001-12-18 16:15
2002.02.07
Размере откомпилированного файла...


1-18787
Dmitriy_R
2002-01-21 14:11
2002.02.07
Как проще сделать что-бы отображать число 1 в виде 01


7-19015
SD
2001-10-30 13:57
2002.02.07
Что значит частота отцифровки звука 11025 Гц


4-19019
Art
2001-12-10 17:20
2002.02.07
Ђ где взЯть справочную инфц по Api???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский