Главная страница
    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.004 c
1-18848
Eraser
2002-01-21 15:38
2002.02.07
Погибаю в пучине потоков (уже давно)


3-18755
Rub
2002-01-11 10:30
2002.02.07
Как добавить к TDBCtrlGrid-у горизонтальный ScrollBar?


1-18895
Leshiy2
2002-01-22 16:04
2002.02.07
Можно ли стандартными средствами сделать форму прозрачной?


1-18824
cpp
2002-01-25 16:22
2002.02.07
Как создать клон экземпляра класса?


1-18851
DJ X
2002-01-16 16:36
2002.02.07
From...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский