[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Генератор паролей
NemoДата: Понедельник, 25 Августа 2008, 16:08 | Сообщение # 1
Начинающий
Группа: Пользователи
Сообщений: 5
Награды: 0
Замечания: 0%
Статус:
Доброго времени суток.
Проблема состоит в том что сам алгортм работает, но иногда проскакивают сбои.
А именно: некоторые созданные пароли имеют не заданную длину Т.Е. они либо короче либо длиннее, в основном короче.
Помогите найти эту недароботку

...
var
Form1: TForm1;
strChar: string;
intLenString: integer;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
RandomIze;
strChar := '1234567890!@#$%&*()_+-='+
'abcdefghijklmnopqrstuvw'+
'xyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

intLenString := Length(strChar)-1;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Memo1.Clear;
Edit1.Clear;
Edit2.Clear;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
intI, intL: integer;
intCount, intLength: integer;
strPass: string;
begin
intCount := StrToInt(Edit1.Text);
intLength := StrToInt(Edit2.Text);
Memo1.Clear;
for intI := 1 to intCount do
begin
for intL := 1 to intLength do
strPass := strPass + strChar[Random(intLenString)];

Memo1.Lines.Add(strPass);
strPass := '';
end;
Memo1.SetFocus;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if Save.Execute then Memo1.Lines.SaveToFile(Save.FileName);
end;

end.

 
NemoДата: Понедельник, 25 Августа 2008, 16:24 | Сообщение # 2
Начинающий
Группа: Пользователи
Сообщений: 5
Награды: 0
Замечания: 0%
Статус:
Quote (snikers)
от какого значения генерируется Рандом ?

Вот сначало заноситься длина всей строки:
intLenString := Length(strChar)-1;
Потом:
strChar[Random(intLenString)]
Сдесь intLenString содержит длину(а следовательно число для рандома)
 
NemoДата: Вторник, 26 Августа 2008, 16:42 | Сообщение # 3
Начинающий
Группа: Пользователи
Сообщений: 5
Награды: 0
Замечания: 0%
Статус:
Quote (HolyDel)
strPass := ''; - я бы всетаки поставил перед генерацией, а не после.

Если ставить до генерации, то получается немного не то.
Прикрепления: pc.rar (169.6 Kb)
 
NemoДата: Пятница, 29 Августа 2008, 16:24 | Сообщение # 4
Начинающий
Группа: Пользователи
Сообщений: 5
Награды: 0
Замечания: 0%
Статус:
HolyDel: Да спасибо. Совсем забыл про то, что нулевой элемент в строке - это ее длина.
В прошлый раз был мельком на форуме и поэтому не стал вникать в твой пост. Еще раз спасибо biggrin
 
MASM32Дата: Среда, 03 Сентября 2008, 21:35 | Сообщение # 5
Врубающийся
Группа: Пользователи
Сообщений: 28
Награды: 0
Замечания: 0%
Статус:

Профессия: Прогремер, хакер
function GenPassaword : string;
var
i : integer;
begin
for i := 1 to 10 do
result [i] = char (random (255));
end.
//супер сложный алгоритм
 
MASM32Дата: Четверг, 04 Сентября 2008, 21:43 | Сообщение # 6
Врубающийся
Группа: Пользователи
Сообщений: 28
Награды: 0
Замечания: 0%
Статус:

Профессия: Прогремер, хакер
Ну
function GenPassaword : string;
var
i : integer;
begin
for i := 1 to 10 do
result [i] = char (random (255) + 1);
end.
 
Женька ХирургДата: Пятница, 05 Сентября 2008, 20:50 | Сообщение # 7
Группа: Гости





HolyDel, но не все видимые символы можно юзать в пароле. А способ задания строкой какраз определяет символы, которые может содержать пароль. Если, допустим пароль должен содержать только цифри, достаточно будет написать const strChar:string = '1234567890'; а не изменять код.
 
  • Страница 1 из 1
  • 1
Поиск: