Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Passwort "endgültig" verschlüsseln (https://www.delphipraxis.net/51593-passwort-endgueltig-verschluesseln.html)

ichbins 15. Aug 2005 19:50


Passwort "endgültig" verschlüsseln
 
Hallo allerseits, ich wollte fragen, ob es eine Möglichkeit gibt, ein Passwort entgültig zu verschlüsseln, so dass es nur noch durch Ausprobieren erraten werden kann und mit keinem anderen Algorithmus auf dieser Welt geknackt werden kann?

Ich habe schon die Möglichkeit gefunden, dass das Passwort per XOR mit sich selbst verschlüsselt wird:

Delphi-Quellcode:
function encode(password:string):string;
var
  i:integer;
begin
  result:='';
  for i:=1 to length(password) do
    result:=result+char(byte(password[i]) xor byte(password[length(password)-i+1]));
end;

//Überprüfen damit:
function pwisok(encodedpassword,edit:string):string;
var
  i:integer;
begin
  result:=length(encodedpassword)=length(edit);
  if not result then exit;
  for i:=1 to length(encodedpassword) do
    result:=result and (encodedpassword[i]=char(byte(edit[i]) xor byte(edit[length(edit)-i+1])));
end;
aber ich denke einmal das das von jedem Halb-Profi geknackt werden kann, wenn er erst einmal diese Funktion kennt, weil da ja so viele Wiederholungen drin sind. Aber z.B. MSWord kann das ja auch und ich kann dann das Passwort nicht wieder kriegen ohne das ich es (mit oder ohne Software) errate. Das muss doch irgendwie gehen?

//edit: ich glaube das passt in keine andere Kategorie, aber wenn doch verschiebt es bitte in die richtige.

//edit2: nach allden Antworten die sich seit gestern angesammelt haben glaube ich das ich mich doch falsch ausgedrückt habe: Ich will mit dem Passwort keine Daten verschlüsseln sondern ein Logon absichern. Bisher konnte ich das Passwort nur in einer INI-Datei als String speichern.

Dax 15. Aug 2005 19:53

Re: Passwort "endgültig" verschlüsseln
 
Ein sicheres, unkanckbares verfahren? Hier im Forum suchenOne Time Pad ;)

Tubos 15. Aug 2005 19:53

Re: Passwort "endgültig" verschlüsseln
 
Du brauchst einen Hier im Forum suchenHash Algorithmus.
Weitere Informationen: http://de.wikipedia.org/wiki/Hash

Olli 15. Aug 2005 20:06

Re: Passwort "endgültig" verschlüsseln
 
Zitat:

Zitat von Tubos
Du brauchst einen Hier im Forum suchenHash Algorithmus.

So ist es, da würde ich mal einen Blick in DEC riskieren und mich über MD5 und SHA schlaumachen. Leider sind Hashalgorithmen im Gegensatz zu dem von Dax angesprochenen Verfahren nicht unknackbar. Für Mathematiker ist es eine Herausforderung Kollisionen in solchen Algorithmen zu erzeugen und je nach Hashlänge kann auch eine sog. Rainbow Table das Problem lösen. Dies ist ein beschleunigtes (weil gecachtes) Brute-Force-Verfahren.

Rückrechnen kann man aber das Paßwort nicht.

Sharky 15. Aug 2005 20:12

Re: Passwort "endgültig" verschlüsseln
 
Anstelle des DEC kannst Du auch die MD5 Funktion aus diesem Beitrag in der Code-Library eines ominösen Users benutzten. :mrgreen:

Wenn Du die Unit um diese Funktion erweiterst kannst Du auch den MD5-Hash eines Strings erzeugen:
Delphi-Quellcode:
function MD5_HashForString(aValue: string): TMD5Digest;
var
  Context: TMD5_CTX;
begin
  MD5Init(Context);
  MD5Update(Context, PChar(aValue), Length(aValue));
  MD5Final(Context, Result);
end;

Olli 15. Aug 2005 20:21

Re: Passwort "endgültig" verschlüsseln
 
Zitat:

Zitat von Sharky
Wenn Du die Unit um diese Funktion erweiterst kannst Du auch den MD5-Hash eines Strings erzeugen

Ich ging davon aus, man könnte diese hier benutzen: MD5_Hash_OverBuffer().

Aber wenn du meinst, würde ich mit einer kurzen Referenz auf dich das noch in die Unit einfügen. Sozusagen als "convenience function" :mrgreen:

ichbins 15. Aug 2005 20:23

Re: Passwort "endgültig" verschlüsseln
 
Vielleicht bin ich einfach nur zu blöd aber ich konnte bei keinem der Links was finden... :wall:
Hat nicht jemand eine Funktion oder so für mich?

Olli 15. Aug 2005 20:36

Re: Passwort "endgültig" verschlüsseln
 
Zitat:

Zitat von ichbins
Vielleicht bin ich einfach nur zu blöd aber ich konnte bei keinem der Links was finden... :wall:
Hat nicht jemand eine Funktion oder so für mich?

Dann gucke doch nochmal in den von Sharky genannten Beitrag. Ich werde die Unit gleich aktualisieren. Wenn du mir also ein paar Minuten gibst, hast du gleich Sharkys Funktion mit drin!

Sharky 15. Aug 2005 20:48

Re: Passwort "endgültig" verschlüsseln
 
Und damit Du auch gleich etwas damit machen kannst ;-)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  md5_digi: TMD5Digest; // Ein 16 Byte grossen Array = 128 Bit;
  passwort: string;
  md5_hexstring: string;
begin
  passwort := 'blubb';
  md5_digi := MD5_HashForString(passwort); // Ereugt den Hash
  md5_hexstring := MD5_Hash2String(md5_digi); // Wandelt die 128 Bit ein einen HEX-String;
  ShowMessage(md5_hexstring);
end;

Olli 15. Aug 2005 20:52

Re: Passwort "endgültig" verschlüsseln
 
Habe es aktualisiert und Sharkys Funktion aufgenommen. Da Sharky eigentlich nichtmal erwähnt werden wollte, und ich keinen Grund sehe selber erwähnt werden zu müssen, nur weil ich eine eigene Übersetzung des C-Codes liefere, habe ich es als PUBLIC DOMAIN deklariert. Niemand wird also je von dir verlangen einen von uns zu erwähnen ;) ... es sei denn, der Hai beißt nochmal zu :mrgreen:

Mit besten Grüssen,


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.
Seite 1 von 2  1 2      

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