[Lazarus Delphi] Generator haseł/kodów jednorazowych
#1
Wrzucam przykładowy kod realizujący generowanie losowe kodów/haseł jednorazowych... można go rozwijać lub poprawiać Wink


[Obrazek: kodyjednorazowe.jpg]


Kod:
procedure TForm1.btnGenerujKodyClick(Sender: TObject);
var
  Znak, Haslo: String;
  i,n: Integer;

begin;
  Memo1.Clear;

  Znak := 'Qq1!Ww2Ee3Rr4$Tt5Yy6Uu7&Ii8Oo90PpAaSsDdFfGgHhJjKkLlZzXxCcVvBbNnMm';

  Randomize;
  for i:= 1 to StrToIntDef(edtIloscKodow.Text,1)do
  begin
    btnZapiszDoPliku.Enabled := FALSE;
    for n:= 1 to 7 do // <----Czesc zmienna hasla to 7 znakow
        begin
          Haslo := Haslo + Znak[Random(Length(Znak))+1];
        end;
    Memo1.Lines.Add(edtCzescStalaKodu.Text + Haslo);
    Haslo := '';
    Application.ProcessMessages;
  end;
  btnZapiszDoPliku.Enabled := TRUE;
  btnZapiszDoPliku.SetFocus; // zapisz do pliku
end;
Post sprawdzony przez  Arcabit Internet Security
Odpowiedz
#2
Też kiedyś zrobiłem generator haseł, tyle że w PHP.
Teraz wiem, że takie podejście jest... złe... Wink

Dlaczego?
Bo z tego co widzę takie Radom() nie jest kryptograficznie bezpieczne.

Będę też czepliwy ale.. Length(Znak) warto przenieść poza pętlę, bo teraz wykonuje się w każdej jej przebiegu, choć tak naprawdę długość jest potrzebna tylko raz Wink
Odpowiedz
#3
Nooo ten Randomize to chyba z Pascala pochodzi Cool
1. Zawsze mam rację.
2. Jeśli nie mam racji, patrz pkt 1.
Odpowiedz


Skocz do:


Użytkownicy przeglądający ten wątek: 2 gości