Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2010, 21:21   #1
ProgDel
Пользователь
 
Аватар для ProgDel
 
Регистрация: 15.02.2010
Сообщений: 67
По умолчанию Генератор паролей. Прямой перебор.Как ускорить?

Я написал тут генератор паролей. Кто подскажет как ускорить перебор?

Код:
var
  fmGener: TfmGener;
  DefStr,NewStr,NewStr2,NewStr3,NewStr4:String;
  LenDs:integer;
implementation

{$R *.dfm}

procedure TfmGener.btnGenerateClick(Sender: TObject);
var i,i2,i3,i4:LongInt;
begin
if (cbCiper.Checked = true)and(cbPropLatAlf.Checked = false)and
(cbStrLatAlf.Checked = false)and(cbSumbol.Checked = false)
then DefStr := '0123456789';

if (cbPropLatAlf.Checked = true)and
(cbStrLatAlf.Checked = false)and(cbSumbol.Checked = false)and
(cbCiper.Checked = false) then DefStr := 'abcdefghijklmnopqrstuvwxyz';

if (cbPropLatAlf.Checked = false)and
(cbStrLatAlf.Checked = true)and(cbSumbol.Checked = false)and
(cbCiper.Checked = false) then DefStr := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

if (cbPropLatAlf.Checked = false)and
(cbStrLatAlf.Checked = false)and(cbSumbol.Checked = true)and
(cbCiper.Checked = false) then DefStr := ' ~`!@#$%^&*()_+|\=-{}[]:;"?/><.,¹';

if (cbPropLatAlf.Checked = true)and
(cbStrLatAlf.Checked = false)and(cbSumbol.Checked = false)and
(cbCiper.Checked = true) then DefStr := '0123456789abcdefghijklmnopqrstuvwxyz';

if (cbPropLatAlf.Checked = false)and
(cbStrLatAlf.Checked = true)and(cbSumbol.Checked = false)and
(cbCiper.Checked = true) then DefStr := '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

if (cbPropLatAlf.Checked = false)and
(cbStrLatAlf.Checked = false)and(cbSumbol.Checked = true)and
(cbCiper.Checked = true) then DefStr := '0123456789 ~`!@#$%^&*()_+|\=-{}[]:;"?/><.,¹';

if (cbPropLatAlf.Checked = true)and
(cbStrLatAlf.Checked = false)and(cbSumbol.Checked = true)and
(cbCiper.Checked = false) then DefStr := 'abcdefghijklmnopqrstuvwxyz ~`!@#$%^&*()_+|\=-{}[]:;"?/><.,¹';

if (cbPropLatAlf.Checked = false)and
(cbStrLatAlf.Checked = true)and(cbSumbol.Checked = true)and
(cbCiper.Checked = false) then DefStr := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ~`!@#$%^&*()_+|\=-{}[]:;"?/><.,¹';

if (cbPropLatAlf.Checked = true)and
(cbStrLatAlf.Checked = true)and(cbSumbol.Checked = false)and
(cbCiper.Checked = false) then DefStr := 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

if (cbPropLatAlf.Checked = true)and
(cbStrLatAlf.Checked = true)and(cbSumbol.Checked = false)and
(cbCiper.Checked = true) then DefStr := '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

if (cbPropLatAlf.Checked = true)and
(cbStrLatAlf.Checked = false)and(cbSumbol.Checked = true)and
(cbCiper.Checked = true) then DefStr := '0123456789abcdefghijklmnopqrstuvwxyz ~`!@#$%^&*()_+|\=-{}[]:;"?/><.,¹';

if (cbPropLatAlf.Checked = false)and
(cbStrLatAlf.Checked = true)and(cbSumbol.Checked = true)and
(cbCiper.Checked = true) then DefStr := '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ ~`!@#$%^&*()_+|\=-{}[]:;"?/><.,¹';

if (cbPropLatAlf.Checked = true)and
(cbStrLatAlf.Checked = true)and(cbSumbol.Checked = true)and
(cbCiper.Checked = true) then DefStr := '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ~`!@#$%^&*()_+|\=-{}[]:;"?/><.,¹';

LenDs := Length(DefStr);

if UpDown1.Position = 1 then begin

for i := 1 to LenDs do begin
application.ProcessMessages;
NewStr := Copy(DefStr,i,1);

mPass.Lines.Add(NewStr);

end;
end;

if UpDown1.Position = 2 then begin

for i2 := 1 to LenDs do begin
application.ProcessMessages;
NewStr2 := Copy(DefStr,i2,1);

for i := 1 to LenDs do begin
application.ProcessMessages;
NewStr := Copy(DefStr,i,1);

mPass.Lines.Add(NewStr2 + NewStr);

end;
end;
end;

if UpDown1.Position = 3 then begin

for i3 := 1 to LenDs do begin
application.ProcessMessages;
NewStr3 := Copy(DefStr,i3,1);

for i2 := 1 to LenDs do begin
application.ProcessMessages;
NewStr2 := Copy(DefStr,i2,1);

for i := 1 to LenDs do begin
application.ProcessMessages;
NewStr := Copy(DefStr,i,1);

mPass.Lines.Add(NewStr3 + NewStr2 + NewStr);

end;
end;
end;
end;

if UpDown1.Position = 4 then begin

for i4 := 1 to LenDs do begin
application.ProcessMessages;
NewStr4 := Copy(DefStr,i4,1);

for i3 := 1 to LenDs do begin
application.ProcessMessages;
NewStr3 := Copy(DefStr,i3,1);

for i2 := 1 to LenDs do begin
application.ProcessMessages;
NewStr2 := Copy(DefStr,i2,1);

for i := 1 to LenDs do begin
application.ProcessMessages;
NewStr := Copy(DefStr,i,1);

mPass.Lines.Add(NewStr4 + NewStr3 + NewStr2 + NewStr);

end;
end;
end;
end;
end;
end;

procedure TfmGener.Create(Sender: TObject);
begin
UpDown1.Associate := Edit1;
end;

end.
ProgDel вне форума Ответить с цитированием
Старый 16.02.2010, 21:34   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,542
По умолчанию

Код:
var
  super: string[4];
//в нужных местах взамен таких строк 
//NewStr2 := Copy(DefStr,i2,1);
super[1]:=defstr[i4];
super[2]:=defstr[i3];
super[3]:=Defstr[i2];
super[4]:=Defstr[i1];
строка это также и массив
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генератор паролей Eclipse09 Общие вопросы C/C++ 2 09.11.2009 13:59
Как "ускорить" задачу на перебор k1r1ch Паскаль, Turbo Pascal, PascalABC.NET 8 07.11.2009 11:34
Генератор паролей valerij Microsoft Office Excel 2 29.07.2009 14:08
Генератор паролей -=L.Morgan=- Помощь студентам 1 29.06.2009 03:04
Генератор паролей pali4ev Общие вопросы Delphi 6 24.12.2008 18:54