Генерация 6-и злачных паролей
Категория: Delphi/Pascal
2012-11-23 16:05:21
значения длиной 6 симлов содержащие символы 0-9 и А-Я
code: #delphi
Sym : Array[0..20] of char; // Тут массив букв, которые ты используешь... в нашем случае у нас 21 символ Value : Array[0..5] of byte; // Тут значение очередного пароля в виде номеров символов... пароль из 6 символов
Функция перебора:
code: #delphi
Function GetNextValue : Boolean; Var I : Integer; Begin Value[5] := Value[5] + 1; // Увеличиваем последнюю букву // Проверяем, на переполнения... если больше 20 (а у нас Sym состоит из 0..20 символов), то увеличиваем следующий разряд For I := 4 downto 0 do Begin If Value[I+1]>20 then Begin Value[I] := Value[I] + 1; Value[I+1] := 0; End; End; // Проверяем самый старший разряд на переполнение... если переполнен, значит все значения перебрали. If Value[0]>20 then Result := False else Result := True; // Значит, функция вернет True, если очередное значение было получено... и вернет False, если уже перебрали все значения End;
Но в начале нужно заполнить переменную Sym и обнулить Value
code: #delphi
Var I : Integer; S : String[6]; Begin For I := 0 to 9 do Sym[I] := Ord('0')+I; // Значения с 0 по 9 - это будут цифры '0'..'9' For I := 10 to 20 do Sym[I] := Ord('A')+I-10; // Остальные значения начнем с заглавной латинской буквы 'A' и т.д. // Таким образом мы заполнили массив Sym значениями '0','1','2'....'8','9','A',B','C'.... значит и перебирать будем эти символы For I := 0 to 5 do Value[I] := 0; // Обнулили массив Value // А теперь начинаем перебирать Repeat For I := 0 to 5 do S[I] := Sym[Value[I]]; // Переводим из числового вида массива Value в строку из символов S // Сейчас S и содержат нужную нам очередную строку... не знаю, что ты с ней хочешь делать... например, выведем ее в TLabel Label1.Caption := S; Label1.Refresh; Until not GetNextValue; End;
Вот общий принцип... возможно и не будет работать (я не проверял)... но плясать можно от этого.
автор: Humanoid
Поделиться: