AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Passwort Sicherheit Code anwenden

Ein Thema von mOzZzI · begonnen am 3. Mär 2006 · letzter Beitrag vom 4. Mär 2006
Antwort Antwort
Benutzerbild von mOzZzI
mOzZzI

Registriert seit: 11. Nov 2005
Ort: Bamberg
320 Beiträge
 
Delphi 2006 Professional
 
#1

Passwort Sicherheit Code anwenden

  Alt 3. Mär 2006, 22:54
Hallo,
ich habe eine Frage: Wie wende ich den Code von Hagen an?
Code:

Delphi-Quellcode:
function PassphraseQuality(const Password: String): Extended;
// returns computed Quality in range 0.0 to 1.0
// source extracted from Delphi Encryption Compendium, DEC

  function Entropy(P: PByteArray; L: Integer): Extended;
  var
    Freq: Extended;
    I: Integer;
    Accu: array[Byte] of LongWord;
  begin
    Result := 0.0;
    if L <= 0 then Exit;
    FillChar(Accu, SizeOf(Accu), 0);
    for I := 0 to L-1 do Inc(Accu[P[I]]);
    for I := 0 to 255 do
      if Accu[I] <> 0 then
      begin
        Freq := Accu[I] / L;
        Result := Result - Freq * (Ln(Freq) / Ln(2));
      end;
  end;

  function Differency: Extended;
  var
    S: String;
    L,I: Integer;
  begin
    Result := 0.0;
    L := Length(Password);
    if L <= 1 then Exit;
    SetLength(S, L-1);
    for I := 2 to L do
      Byte(S[I-1]) := Byte(Password[I-1]) - Byte(Password[I]);
    Result := Entropy(Pointer(S), Length(S));
  end;

  function KeyDiff: Extended;
  const
    Table = '^1234567890ß´qwertzuiopü+asdfghjklöä#<yxcvbnm,.-°!"§$%&/()=?`QWERTZUIOPÜ*ASDFGHJKLÖÄ''>YXCVBNM;:_';
  var
    S: String;
    L,I,J: Integer;
  begin
    Result := 0.0;
    L := Length(Password);
    if L <= 1 then Exit;
    S := Password;
    UniqueString(S);
    for I := 1 to L do
    begin
      J := Pos(S[I], Table);
      if J > 0 then S[I] := Char(J);
    end;
    for I := 2 to L do
      Byte(S[I-1]) := Byte(S[I-1]) - Byte(S[I]);
    Result := Entropy(Pointer(S), L-1);
  end;

const
  GoodLength = 10.0; // good length of Passphrases
var
  L: Extended;
begin
  Result := Entropy(Pointer(Password), Length(Password));
  if Result <> 0 then
  begin
    Result := Result * (Ln(Length(Password)) / Ln(GoodLength));
    L := KeyDiff + Differency;
    if L <> 0 then L := L / 64;
    Result := Result * L;
    if Result < 0 then Result := -Result;
    if Result > 1 then Result := 1;
  end;
end;
Wie kann ich den jetzt z.B.:

Delphi-Quellcode:
procedure Tneu_account.Edit1Change(Sender: TObject);
begin
 ProgressBar1.Position:=PassphraseQuality(edit1.Text);
end;
Aber das geht ja nich, wie mache ich das?
--Mfg mozZzI--------------
Get & Test my ToolBar (550 KB)
Thread & Comments Here
------------------------------
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Passwort Sicherheit Code anwenden

  Alt 3. Mär 2006, 23:00
186 Beiträge und noch nie von Delphi-Referenz durchsuchenRound gehört?!

EDIT: Eventuell Ganz bestimmt musst du das auch noch multiplizieren
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von mOzZzI
mOzZzI

Registriert seit: 11. Nov 2005
Ort: Bamberg
320 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Passwort Sicherheit Code anwenden

  Alt 3. Mär 2006, 23:01
Zitat von DGL-luke:
186 Beiträge und noch nie von Delphi-Referenz durchsuchenRound gehört?!


Stimmt ja
--Mfg mozZzI--------------
Get & Test my ToolBar (550 KB)
Thread & Comments Here
------------------------------
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Passwort Sicherheit Code anwenden

  Alt 3. Mär 2006, 23:02
Schau dir mal die ersten 2 Zeilen von Hagens Code an:
Code:
function PassphraseQuality(const Password: String): [b]Extended[/b];
// returns computed Quality in [b]range 0.0 to 1.0[/b]
Daraus solltest du eigentlich erkennen können, was zu tun ist
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von mOzZzI
mOzZzI

Registriert seit: 11. Nov 2005
Ort: Bamberg
320 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Passwort Sicherheit Code anwenden

  Alt 3. Mär 2006, 23:06
hab nochn problem, habe jetzt mit round eingebaut, doch es funzt net...
Erst wenn ich vill über 200buchstaben und zahlen eingegeben hab gewegt sich ein balken^^
?? Was hab ich falsch gemacht?
--Mfg mozZzI--------------
Get & Test my ToolBar (550 KB)
Thread & Comments Here
------------------------------
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Passwort Sicherheit Code anwenden

  Alt 3. Mär 2006, 23:16
schau dir einfach mein edit oben an...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von mOzZzI
mOzZzI

Registriert seit: 11. Nov 2005
Ort: Bamberg
320 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Passwort Sicherheit Code anwenden

  Alt 3. Mär 2006, 23:19
Zitat von DGL-luke:
186 Beiträge und noch nie von Delphi-Referenz durchsuchenRound gehört?!

EDIT: Eventuell Ganz bestimmt musst du das auch noch multiplizieren
Sry, aber mit was multiplizieren?
--Mfg mozZzI--------------
Get & Test my ToolBar (550 KB)
Thread & Comments Here
------------------------------
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Passwort Sicherheit Code anwenden

  Alt 3. Mär 2006, 23:22
Also, jetzt nochmal für Leute mit dem -smiley im avatar:

Progressbar1.position := round(passlevel * Progressbar1.max); Unter der annahme, progressbar1.Min = 0

PS: so früh ist coden schon schwierig...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#9

Re: Passwort Sicherheit Code anwenden

  Alt 4. Mär 2006, 01:15
Exakt, und wenn man sich das mal genau überlegt so wird man sicherlich auch feststellen das ich mir dabei was gedacht hatte

Die Funktion gibt einen Wert zwischen 0.0 für schlecht und 1.0 für super gut zurück.
Wenn du das in Prozent umrechnen willst dann also einfach mit 100 multiplizieren. Hast du aber eine ProgressBar die maximal bis 25 geht hast, dann eben mit 25 multiplizieren. Einfacher gehts nicht

Berücksichtige aber auch das diese Funktion kein "Allerheilmittel" sein kann, eher ein Anhaltspunkt.
Ein gutes Passwort kann man "niemals" berechnen, ansonsten wäre es ja nicht mehr sicher. Ergo wird es auch nie einen einfachen Algorithmus geben können der ein Passwort mit hoher Genauigkeit als sicher/unsicher einstufen kann.
Relativ gesehen wurde aber alles im Algo. berücksichtigt was technisch sinnvoll und umsetzbar ist.

Gruß Hagen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz