Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Und wieder ne Frage zu Passwort Verschlüsselung (https://www.delphipraxis.net/77798-und-wieder-ne-frage-zu-passwort-verschluesselung.html)

Andidreas 25. Sep 2006 08:44


Und wieder ne Frage zu Passwort Verschlüsselung
 
aloha...

ich hab mich hier mal im forum nach möglichkeiten einer passwort verschlüsselung umgesehen und hab auch einiges gefunden...
wie z.b. das man passwörter mit MD5 / SHA / 3DES / AES
oder über diverse kompos dcpcrypt
verschlüsseln kann...

leider kann ich damit nichts anfangen, bzw. weiß nicht wie ich das anwenden muss in einem programm...

vielleicht könnt ihr mir ja weiterhelfen...
mein ziel ist es passwörter in die z.b. in einem tedit feld eingegeben werden verschlüsselt in einer db (MySQL) oder vielleicht auch in einem .ini File zu hinterlegen...

Phoenix 25. Sep 2006 08:49

Re: Und wieder ne Frage zu Passwort Verschlüsselung
 
Zuerst einmal: Verschlüsselt oder Gehasht?

Corpsman 25. Sep 2006 09:48

Re: Und wieder ne Frage zu Passwort Verschlüsselung
 
Ich schätze er meint Verschlüsselt.

Wenn es dir nicht um Geschwindigkeit geht, ist es "Fast" egal welches Verschlüsselungsverfahren du nimmst.

( Es gäbe da übrigens auch noch ein RSA verfahren )

Wenn du es via Hash machst machst must du dir halt ne Haschfunciton speichern, je nachdem wie Clever oder auch nicht deine Function ist wären dann deine Passwörter leicht zu knacken.

Ein Beispiel :

Deine Hashfunction sei :

Delphi-Quellcode:

Function hash(PW:String):Integer;
var erg,x:Integer;
begin
  erg:=0;
  for x:= 1 to length(pw) do
    erg:= erg + ord (pw[x]); // Keine Ahnung ob das ord oder odd ist ich COde hier grad blind ;)
  result := erg;
end;
dann würden die Passwörter "Hallo Welt" und "Welt Hallo" beide den selben integer geben.

Wenn du es mit ner verschlüsselnung machst dann machst du im Prinzip das was ein Zahlen Kreuzworträtsel macht.

Du must dann Ebenfalls Zeichenweise durch deinen String gehen und jedem Zeichen einen neuen Wert zuweisen.

Du kannst auch mehrere Zeichen Zusammenfassen.

Dazu würde sich z.b. anbieten immer 2 Char als 1 Integer auffasssen mit z.b.


Delphi-Quellcode:
function Kompound( c1,c2:Char):integer;
begin
  result:= ord(c1) + 1000* ord(c2); // Wieder das selbe Problem von oben , ord oder odd ?
end;
dann verschlüsseln

und beim Entschlüsseln
eben dann wieder

Delphi-Quellcode:
Type T2Char = Record
      C1:Char;
      c2:Char;
     end;
Function UnKompound(Value:integer):T2char;
var erg: T2char;
begin
  erg.c1 := chr(Value mod 1000);
  erg.c2 := chr(Value Div 1000);
  result:=erg;
end;
Ich hoffe das hilft dir bei deiner Entscheidung ;)

Andidreas 25. Sep 2006 10:02

Re: Und wieder ne Frage zu Passwort Verschlüsselung
 
Zitat:

Zitat von Phoenix
Zuerst einmal: Verschlüsselt oder Gehasht?

hmm ist mir eigentlich egal ^^ hauptsache ich hab mein passwort nicht in klarschrift in meiner .ini bzw. db stehen ;)

@corpsman
danke schon mal für deine beispiele, ich denk mal das sie mir schon weiterhelfen werden ;)


wie könnte ich denn jetzt dann aber verschlüsselungen wie md5 / sha / 3des / aes .... verwenden...
hat mir hierfür vielleicht noch jemand ein bsp.?

Corpsman 25. Sep 2006 10:06

Re: Und wieder ne Frage zu Passwort Verschlüsselung
 
Ich kanns dir nicht 100% ig sagen, aber ich denke mal das die anderen Verfahren auch so sind wie RSA

Sprich sie verschlüsseln Integer -> Integer


Also must du nur überlegen wie du dir die Strings in Integer Bastelst z.b. mit Kompound da kannst du auch Locker 3 oder 4 Char in eine Integer packen.

und dann eben wieder Rückwärts.

Zur not Lade dir das RSa Proggy runter da ist der Source dabei.das Sample Zeigt wie du die Integer -> Integer verschlüsselung machst.

St.Pauli 25. Sep 2006 10:15

Re: Und wieder ne Frage zu Passwort Verschlüsselung
 
Also, es gibt 2 Verfahren die du benutzten kannst:

1. Hash (SHA, SHA1, MD4, MD5, Haval, RIPE-MD, ...)

Du erstellst den Hashwert deines Passwortes und speicherst diesen in der Datenbank ab. Dabei solltest du wissen, das es zwar extrem einfach ist den Hashwert deines Passwortes zu errechnen, jedoch extrem schwer sein sollte von einem gegebenen Hashwert wieder auf das Passwort zu schließen. Deswegen kannst du das Verfahren nur benutzten, wenn du ein Passwort überprüfen willst. Dann errechnest du den Hashwert des eingegebenen Passworts und vergleichst diesen mit dem gespeicherten.

Ein Beispiel mit der MD5-Unit:

Delphi-Quellcode:
   MD5Print(MD5String(Passwort));
2. Verschlüsselung (Des, Blowfish, Twofish, IDEA, ...)

Wenn du das abgespeicherte Passwort irgendwann wieder wissen willst, musst du es verschlüsseln. So wirst du es wiederherstellen können. Das ganze wird dich jedoch vor das Problem stellen, dass du ein weiteres Passwort benötigst, mit dem du deine Passwörter verschlüsselst.

Beispiel für die Verschlüsselung ist hier die RC4-Unit.

Andidreas 25. Sep 2006 10:43

Re: Und wieder ne Frage zu Passwort Verschlüsselung
 
hmm ok, dann is das hashen nicht wirklich was für mich ^^ bzw. ich könnte es wahrscheinlich nur für eine einfache login routine verwenden...

hmm dann hab ich ja jetzt im prinzip nur noch die möglichkeit das passwort zu verschlüsseln über die bereits gängigen methoden, oder ich lass mir selber nen algorhytmus einfallen in dem ich ein passwort zerglaube und verschlüssel :lol:

St.Pauli 25. Sep 2006 10:57

Re: Und wieder ne Frage zu Passwort Verschlüsselung
 
Was genau willst du denn mit dem abgespeicherten Passwort machen?

Andidreas 25. Sep 2006 11:10

Re: Und wieder ne Frage zu Passwort Verschlüsselung
 
ich will mich persönlich ein prog. schreiben in dem ich meine pw's abspeichern kann...
bzw. evtl. sollen das prog. auch mal andere leute verwenden können...

für denn login in das eigentliche prog. könnte ich das mit dem hash machen...
da ich dann die anderen pw's aber anzeigen möchte, müsste ich diese verschlüsseln, da lt. denn obigen beiträgen, gehashte pw's nicht so einfach wieder anzuzeigen gehen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz