Entwickler-Ecke
Sonstiges (Delphi) - Passwörter verschlüsseln
F.Art - Sa 14.05.05 11:19
Titel: Passwörter verschlüsseln
Hat jemand ein Sourcecode für mich wie ich in meinen Tools die Passwörter verschlüsselt abspeichern kann und wieder entschlüsseln kann?
Tobias1 - Sa 14.05.05 11:21
Du kannst es mit einer xor Verschlüsselung machen(nicht ganz so sicher aber recht einfach)
Da wirst du hier im DF fündig
delfiphan - Sa 14.05.05 11:26
Besser ist es, wenn du die Passwörter dann gar nicht mehr zurückrechnen kannst. => MD5
Du vergleichst dann das codierte, eingegebene Passwort mit dem gespeicherten, codierten Passwort; nicht die Passwörter selber. Das macht die Sache recht sicher.
F.Art - So 15.05.05 20:13
Die Idee mit dem MD5 und vergleichen hört sich interesant an, werde ich mir bei Zeiten mal anschauen.
crakos - So 15.05.05 21:56
@F.Art Hätte in paar tagen, fast das gleiche gefragt ;)
und
@matze.de Das ist ja mal ne geile verschlüsselung :) Vielen dank :D
DeCodeGuru - So 15.05.05 22:14
@crakos: md5 ist kein Verschlüsselungsalgorithmus, sondern ein Hashalgorithmus, d.h. mit Hilfe dessen wird eine Prüfsumme (= Hash) generiert, der praktisch einmalig ist. Daher eignet er sich auch sehr gut für die Verwendung von Passwortüberprüfungen.
crakos - So 15.05.05 22:34
jo ich weiss, als ich das hier im thread gelesen hab, hab ich in wikipedia gestöbert, und mir das mal alles durchgelesen, da ich nicht wusste was md5 ist geschweigenden nen hash.
Formal hasse natürlich recht. Aber letztlich wird es ja verschlüsselt, also das password.
es steht ja nicht das password in der datei, sonder der hash :)
Also für dich: das ist aber ein geiler Hash Algorythmus
Christian V. - So 15.05.05 22:35
Wenn du's wieder entschlüsseln willst, dan ist hier noch was. Es basiert auf Xor, ist jedoch besser da jedes Zeichen einzeln verschlüsselt wird.
crakos - So 15.05.05 22:41
nene ich brauchte das genau, muss nämlich ein password speichern und war mir halt ziemlich unsicher. Mit dem Hash bin ich perfekt bedient.
und zu dem prg was sind .dcu dateien? mein delphi wird nicht standart mäßig damit geöffnet. Also hab ichs erstmal auch nicht vor ;) und in der reg datei steht nix drin? denke mal das prg macht das dann :)
Christian V. - So 15.05.05 22:52
Nun das programm legt zu begin 256(galube ich zumindest) Werte in der Registry ab. Wenn du ein einen neuen Eintrag in den PWManager machst werden alle eingaben mit einem anderen code verschlüsselt.
Wenn man also nicht alle Schlüssel hat, kann man es soweit ich weiss nicht regenerieren. Auf jedenfall das Passwort sicher nicht, soweit es mit dem "Generator" erstellt wurde. denn prinzipiell ist jede möglichkeit für den Computer "Richtig"
Natürlich kann man jedoch das Hauptpasswort mit Bruteforce hacken, wie bei jedem anderen auch. Nur, weshalb willst du denn ein Passwort speichern, wenn du es nur wieder vergleichen willst?
Ach ja, habe mal Formatiert und habe deshalb nicht mehr alle Dateien. Vielleicht kann man das Programm ja decompillieren?
crakos - So 15.05.05 23:21
| Zitat: |
Nur, weshalb willst du denn ein Passwort speichern, wenn du es nur wieder vergleichen willst?
|
Ja man erstellt am Anfang ein Password.
Und später wird dann das Password abgefragt.
Und wenn es richtig ist, kommt man in den gewünschten Bereich.
F.Art - Mo 16.05.05 22:59
Habe mir das mit MD5 mal angeschaut, aber das funktioniert so nicht.
Ich muß MD5 wieder entschlüsseln können, da doch jedesmal ein anders verschlüsselter Wert raus kommt und man es nicht vergleichen kann.
Wert1: $apr1$2n1.....$qom.izsz3Ci0Bjl1POC6Z1
Wert2: $apr1$qg1.....$lowzV8lrfsqlnDnAk5zbE/
Ah aber SHA kann man nehmen, damit würde es gehen.
Jetzt brauche ich nur ein Sourcecode um SHA Verschlüsselung zu generieren, hat da jemand was für mich?
matze.de - Mo 16.05.05 23:06
bei md5 kommt immer der selbe Ziel-Hash raus!! Musst du irgendetwas falsch gemacht haben.
mfg matze
StefanH - Di 17.05.05 10:03
F.Art hat folgendes geschrieben: |
| Ich muß MD5 wieder entschlüsseln können |
wenn du das geschafft hast, lass es dir patentieren ;)
du musst das eingegebe passwort "md5en" und den Hash dann mit dem gespeicherten vergleichen. und wenns gleich ist, wars auch das gleiche passwort
F.Art - Di 17.05.05 12:17
So habe ich das mit SHA vor.
Aber ich brauche für ein anderes Projekt noch ein Verschlüsselung und entschlüsselung, wer hat noch was in dieser Art für mich?
patrick - Di 17.05.05 12:24
F.Art hat folgendes geschrieben: |
...da doch jedesmal ein anders verschlüsselter Wert raus kommt und man es nicht vergleichen kann.
Wert1: $apr1$2n1.....$qom.izsz3Ci0Bjl1POC6Z1
Wert2: $apr1$qg1.....$lowzV8lrfsqlnDnAk5zbE/
|
naja, wenn sich wert2 auch von wert1 unterscheidet, ist das resultat klar ^^
crakos - Di 17.05.05 14:19
ich glaube er hat gar nicht verstanden, was md5 eigentlich ist, oder machen soll.
es ist der sinn, das du nix analysieren kanst Oo
F.Art - Di 17.05.05 20:42
Ich habe verstanden das MD5 ist mein Passwort generator gibt bei dem selben PW unterschiedliche Hashwerte raus. Mein SHA Generator nicht.
Aber ich brauche für ein anderes Projekt ein Verschlüsselungssystem was das Tool auch wieder entschlüsseln kann.
crakos - Di 17.05.05 20:55
mh F.Art also md5 gibt genau den gleichen hash wert wieder!!!!
Wenn du 2 verschiedene werte eingibst, ist klar das das falsche rauskommt Oo
wie patrick auch bemerkt hat.
md5 funktioniert perfekt. Aber wenn dus nicht verstehen wilst ok. aber sonst probs doch nochmal mit dem gleichen wort aus :>
feivel3333 - Di 17.05.05 21:01
@F.Art: Ich habe eine Komponente aus einem Forum erhalten, die Passworte verschlüsseln kann. Nun ist die Frage, wie sicher die Angelegenheit sein soll. Gemäß Readme-Datei soll man damit keine Bankdaten versenden.
Willst du sie mal testen?
Gruß, Feivel
F.Art - Di 17.05.05 21:51
Mein MD5 gibt unterschiedliches aus auser MD4 und SHA.
Naja egal, ich brauche noch was um ein PW zu verschlüsseln und wieder zu entschlüsseln.
MD5 kann ich nicht entschlüsseln.
DeCodeGuru - Di 17.05.05 22:10
MD5 ist ja auch kein Verschlüsselungsalgorithmus, sondern ein Hashalgorithmus, der Prüfsummen errechnet. Diese Prüfsummen haben "nichts mehr mit dem eigentlichen Passwort zu tun", d.h. die Prüfsumme ist kein verschlüsseltes Äquivalent zum Passwort! Diese Prüfsummen lassen sich auch nicht mehr zurückrechnen, weshalb die Passwortspeicherung als MD5-Hashs sehr sicher ist! Ich würde diese Methode jedem Verschlüsselungsalgorithmus vorziehen.
| F.Art hat folgendes geschrieben: |
| Naja egal, ich brauche noch was um ein PW zu verschlüsseln und wieder zu entschlüsseln. |
Warum? Warum musst du das Passwort wieder entschlüsseln? Du kannst doch bei einem Passwortvergleich einfach die Prüfsumme des eingegebenen Passwortes errechnen und diese dann mit der gespeicherten (Prüufsumme des "gespeicherten Passwortes") Prüfsumme vergleichen. Sind die Prüfsummen gleich, dann sind auch die Passwörter gleich! :)
crakos - Di 17.05.05 22:26
Ich sachte doch er hatte es noch nicht vestanden :>
Gosa - Di 17.05.05 22:56
Vielleicht braucht er das Passwort aber in nicht verschlüsselter form um sich damit irgendwo einzulogen...
So kannst du das z.B. machen... ist aber nicht wirklich sicher (aber mann kann noch ganz viel krams da mit rein tun)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56:
| Function PasswortVerschluesseln(Passwort : string) : string; Function PasswortEntschluesseln(Passwort : string) : string; Function HexToInt(const S: String): Integer;
Function PasswortVerschluesseln(Passwort : string) : string; var SchriPass : String; Buchstabe : Integer; i : integer; Begin i:= 1; While i <= length(Passwort) do Begin Buchstabe := ord(Passwort[i]) + 12;
SchriPass := SchriPass + inttohex(Buchstabe,2); i:= i + 1; End; result := SchriPass; End;
Function PasswortEntschluesseln(Passwort : string) : string; var DeSchriPass : String; Buchstabe : String; i : integer; Begin i:= 1; While i <= length(Passwort) - 1 do Begin Buchstabe := Passwort[i] + Passwort[i + 1];
DESchriPass := DeSchriPass + chr(hextoint(Buchstabe) - 12);
i:= i + 2; End;
result := DeSchriPass; End;
function HexToInt(const S: String): Integer; var I, Ziffer: Integer; begin Result := 0; for I := 1 to length(S) do begin Case S[I] of '0'..'9': Ziffer := Ord(S[I])-Ord('0')+0; 'A'..'F': Ziffer := Ord(S[I])-Ord('A')+10; 'a'..'f': Ziffer := Ord(S[I])-Ord('a')+10 else raise EConvertError.Create('Ungültiges Zeichen bei Konversion!'); end; Result := Result*16 + Ziffer; end; end; |
F.Art - Mi 18.05.05 08:39
Gosa hat mit seiner Aussage recht.
Wie benutze ich die Funktion nun richtig?
patrick - Mi 18.05.05 09:15
nochmal ein artikel von mit zum verständis:
| patrick hat folgendes geschrieben: |
...sowas macht man in der regel über prüfsummen.
am weitesten verbreitet ist der MD5 algo. wobei auch SHA stark im kommen ist.
source hab ich grad keinen da aber es gibt bei torry unmengen von kompunenten die das leisten.
eine prüfsumme ist eine art eineweg-verschlüsselung->sie lässt sich zwar encodieren aber nicht mehr decodierten.
wozu dann das ganze??
ganz einfach: die verschlüsselten daten sind nicht mehr rückführbar
man erstellt eine prüfsumme und speichert diese ab.
ein angreifer kann die prüfsumme zwar sehen aber weis nicht wie das dazugehörige passwort heißt->nicht decodierbar.
wenn du nun überprüfen willst, ob das passwort stimmt, musst du nur das passwort wieder encodieren und anschließend das ergebnis mit der gespeicherten checksumme vergleichen.
in der regel werden noch zusätzliche daten zu dem passwort hinzugefügt (wie z.b. <passwort>+abc)
damit sich ein angreifer nicht ohne weiteres eine eigene checksumme von einem beliebigen passwort erstellen kann und die gespeicherte einfach durch seine ersetzt |
ich hoffe jetzt ist das prüfsummen-prinzip etwas verständlicher
Motzi - Mi 18.05.05 13:35
Für alle die es ganze genau wissen wollen - ich hab letztes Semester für die Uni eine Arbeit über Hashalgorithmen geschrieben. Ich hab sie gerade auf meinen Webspace raufgeladen. Man findet sie auf meiner Homepage bei den Tutorials:
http://www.manuel-poeter.de
BTW: MD4 gilt schon seit langen am unsicher, auch MD5 hat eine kleine Schwäche (steht auch in meiner Arbeit), und vor ein paar Monaten oder so ist auch bei der Kryptanalyse von SHA ein Durchbruch gelungen. Ich würde daher am ehesten zu RIPEMD raten...
Gruß, Motzi
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!