Autor |
Beitrag |
Janoschka
      
Beiträge: 23
|
Verfasst: Mi 21.08.02 13:59
Wie füntzt der MD5 Decoder von den IndyMisc Kompos?
Irgendwie bringe ich es nicht auf die Reihe mit ihm einen String mit MD5 zu verschlüsseln.
Kann mir irgendjemand eben erklären wie das geht?
Ich habe beispielsweise 2 Lables und möchte, die Caption von Lable 1 per MD5 encoden und dann als Caption von Lable 2 anzeigen.
THX schonmal...
|
|
Arakis
      
Beiträge: 344
|
Verfasst: Mi 21.08.02 22:18
Decoder? MD5 ist keine Verschlüsselung, sonder bildet aus den Daten eine Quersumme, einen sogenannten Hash. Dies ist eine Einbandstrasse, d.h man bekommt die ursprünglichne Daten nicht mehr zurück.
Hier ein kleines Bespiel:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| function TForm1.MD5(Str: String): String; var s: string; i: integer; begin result := ''; IdCoderMD51.Reset; IdCoderMD51.AutoCompleteInput := True; s := IdCoderMD51.CodeString(Str); for i := 1 to Length(s) do begin result := result + LowerCase(IntToHex(BYTE(s[i]), 1)); end; end;
procedure TForm1.Button1Click(Sender: TObject); var hash: String; begin hash := MD5('geheim'); if hash = MD5('geheim') then showmessage('Zugriff gestattet') else showmessage('Zugriff verweigert'); end; |
Bis dann

_________________ Mit dem Computer löst man Probleme, die man ohne ihn nicht hätte.
Entwickler von SpaceTrek: The New Empire - Siehe Hompage!
|
|
Janoschka 
      
Beiträge: 23
|
Verfasst: Do 22.08.02 04:01
jup, decoder war das falsche wort - encoder.
MD5 ist eine Eniwegverschlüsselung, oder habe ich da was falsch verstanden?
|
|
O'rallY
      
Beiträge: 563
|
Verfasst: Di 27.08.02 14:43
MD5 ist meines Wissen kein Verschlüsselungsalghorithmus. Anhand der Hashes kann man lediglich überprüfen, ob die Datei verändert wurde. Oder?
|
|
fbkreon
      
Beiträge: 50
|
Verfasst: Sa 21.09.02 13:32
MD5 arbeitet auf dem RSA-Algorithmus, der wenn man so will eine Verschlüsselung darstellt, da man rein theoretisch aus nem MD5-Hash die Originaldaten wiedergewinnen könnte, nur wäre dies so rechenintensiv, daß z.Zt. kein Clustercomputer der Welt genug Rechenkapazität dafür hat. Insofern ist dies eine sehr wirkungsvolle Methoden, wenn man bestimmte Daten selbst kennt, aber nicht möchte, daß ein Fremder hiermit etwas anfangen kann. Wir verwenden es in der Firma, um Benutzerdaten und Passwörter zu übermitteln, denn diese sind gehasht in Datenbanken sehr gut versteckbar.
Übrigens ist in dem Delphi-Quelltext-Beispiel ein kleines Problem:
anstelle
Quelltext 1: 2: 3: 4:
| for i := 1 to Length(s) do begin result := result + LowerCase(IntToHex(BYTE(s[i]), 1)); end; |
muß es für den 'echten' MD5-Hash folgend lauten:
Quelltext 1: 2: 3: 4:
| for i := 3 to Length(s) do begin result := result + LowerCase(IntToHex(BYTE(s[i]), 1)); end; |
andernfalls wird nämlich nicht nur der Hash sondern auch noch die von der Indy-Komponente mitgeschickten checkdaten und das semikolon "mitgehext".
Das dem so ist, kann man einfach per PHP überprüfen:
Quelltext
|
|
fbkreon
      
Beiträge: 50
|
Verfasst: Sa 21.09.02 16:35
Ich persönlich würde Dir aber dazu raten, mal auf torry.net zu gehen und mal mit dem begriff md5 zu suchen...da gibt es einige sehr feine und vor allem "richtige" Komponenten mit korrektem Ergebnis.
|
|
Dan
Hält's aus hier
Beiträge: 5
|
Verfasst: Do 21.11.02 14:22
Titel: Wo finde ich die Komponente TIdCoderMD5 ????
Ich hab mich jetzt echt danach doof gesucht... !
:oops:
In welchem Package finde ich die Komponente TIdCoderMD5 ?????
Danke!
|
|
ao
      
Beiträge: 145
Win XP Prof.
D7 Ent.
|
Verfasst: Do 21.11.02 14:59
Hallo Janoschka,
als alternative zu der Indy MD5 Komponente kann ich dir nur die MD5 Implementation von Fichtner empfehlen, ist nämlich nur eine Unit die du einbinden musst!
www.fichtner.net/delphi/md5.delphi.phtml
Gruß
Andreas
|
|
Dan
Hält's aus hier
Beiträge: 5
|
Verfasst: Do 21.11.02 15:02
Titel: In dem Indy...
...Package ist bei mir keine MD5 Komponente enthalten?! Jetzt hab ich die Version aber erst vor 2 Wochen von den Machern gezogen und installiert?!? Oh je... :cry:
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Do 21.11.02 15:12
Titel: Re: Wo finde ich die Komponente TIdCoderMD5 ????
Dan hat folgendes geschrieben: | Ich hab mich jetzt echt danach doof gesucht... !
In welchem Package finde ich die Komponente TIdCoderMD5 ?????
Danke! |
In der Indy-Komponenten-Sammlung! Sollten hier in der Link-Sammlung auch zu finden sein!
Gruß wulfskin!
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
a
Hält's aus hier
Beiträge: 14
Win 2000
D5 Entp
|
Verfasst: Do 21.11.02 15:54
fbkreon hat folgendes geschrieben: | ...der wenn man so will eine Verschlüsselung darstellt, da man rein theoretisch aus nem MD5-Hash die Originaldaten wiedergewinnen könnte... |
|
|
fbkreon
      
Beiträge: 50
|
Verfasst: Do 21.11.02 17:02
Ein Hash ist eine Zusammenstellung aus Systemzeit,
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Fr 22.11.02 11:52
Um das hier mal klarzustellen... MD steht für Message Digest. MD5 ist die 5te Version einer von Ron Rivest entworfenen Einweg-Hashfunktion die einen 128Bit großen Hash-Wert erzeugt. Eine Einweg-Hashfunktion hat den Zweck einen Fingerabdruck einer Eingabe anzulegen, d.h. einen Wert zu erzeugen, der etwas darüber aussagt, ob eine bestimmte Eingabe aller Wahrscheinlichkeit nach mit dem tatsächlichen Original übereinstimmt. Da Hashfunktionen normalerweise mehrere Werte auf einen abbilden, können wir mit ihnen zwar nicht hundertprozentig, aber mit ausreichender Sicherheit entscheiden, ob zwei Strings identisch sind.
MD5 basiert weder auf der Systemzeit (wär auch eher schwachsinnig, da sich die Systemzeit ja ändert, dass heißt es würde also immer ein andrer Wert von derselben Eingabe erzeugt werden) noch auf RSA (RSA ist ein public-key Algorithmus bei dessen Entwicklung Ron Rivest mitgearbeitet hat, aber das hat nix mit MD5 zu tun)!
Und falls du eine gute Komponente mit einer MD5-Implementation suchst kann ich dir nur das DEC von Hagen Reddmann empfehlen!
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Fr 22.11.02 13:42
Achja, MD5...
Zitat: | der wenn man so will eine Verschlüsselung darstellt, da man rein theoretisch aus nem MD5-Hash die Originaldaten wiedergewinnen könnte |
Also: Ein Hash ist doch eine Prüfsumme mit konstanter Länge, die aus einer Datenmenge mit variabler Länge generiert wird.
Das impliziert, das unendlich viele (aber nicht alle!) möglichen Datenmengen denselben Hash erzeugen.
Wenn du also nur einen Hash hast, kannst du rein gar nichts damit anfangen, da eine vollständige Dekodierung per Brute Force dir eben unendlich viele Resultate liefern müsste. Es ist also selbst theoretisch nicht möglich.
Erst wenn du die Grösse der zugrundeliegenden Datenmenge zur Verfügung hast, kannst du theoretisch zurückrechnen und bekommst dann eine endliche Menge an Datenmengen, die den Hash erzeugen.
Cu,
Udontknow
|
|
fbkreon
      
Beiträge: 50
|
Verfasst: Fr 22.11.02 18:06
Grins, das mußt du mir nicht erzählen, ich habe das studiert.....
Deswegen schrieb ich ja such was von theoretisch. Aber selbst wenn du eine annähernde Ahnung hättest, nach was du suchst, dann reicht z.Zt. keine weltliche Rechnerkapazität dazu aus, es in einer realistischen Zeit herauszufiltern. Im übirgen bekommst du über den MD5 für jeden Code nur genau EINEN Hash zurück. Der ergibt sich nämlich aus z.B. der aktuellen Systemzeit usw. Er bleibt aber immer der gleiche.
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Fr 22.11.02 19:06
Zitat: | Aber selbst wenn du eine annähernde Ahnung hättest, nach was du suchst, dann reicht z.Zt. keine weltliche Rechnerkapazität dazu aus, es in einer realistischen Zeit herauszufiltern. Im übirgen bekommst du über den MD5 für jeden Code nur genau EINEN Hash zurück. |
Soweit stimm ich dir noch zu...
Zitat: | Der ergibt sich nämlich aus z.B. der aktuellen Systemzeit usw. Er bleibt aber immer der gleiche. |
Hierbei jedoch nicht mehr! Einmal eine rein logische Frage.. wie willst du auf 2 unterschiedlichen Systemen mit 2 unterschiedlichen Systemzeiten ein und denselben Hash-Wert von ein und derselben Eingabe bilden, wenn der Algorithmus auf der Systemzeit basiert? Ein Hash-Algorithmus basiert auf einem fixen Algorithmus mit fixen Daten, schließlich handelt es sich dabei nicht um eine auf einem Passwort basierende Verschlüsselung! Falls du mir das nicht glaubst kann ich morgen oder übermorgen (je nachdem wann ich Zeit hab) den kompletten Ablauf des MD5 Algos hier posten.
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Fr 22.11.02 21:41
Korrekt @ Motzi.
@fbkreon:
Jaja, du hast theoretisch geschrieben, und genau darauf bezog ich mich ja auch! Es ist theoretisch genausowenig möglich, solange man nicht wenigstens die Grösse oder irgend etwas anderes über die zu findende Datenmenge weiss, ansonsten bekämst du beim "Durchsuchen sämtlicher Möglichkeitsräume" nämlich eine unendlich grosse Anzahl von Datenmengen, die alle diesem Hash entsprechen. Und da die Wahrscheinlichkeit, die richtige Datenmenge aus einer unendlich grossen Anzahl herauszupicken gleich null ist, ist es auch theoretisch nicht möglich.
Cu,
Udontknow
PS: Wie bist du auf diesen Namen gekommen?
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Fr 22.11.02 21:46
Korrekt @ Udontknow! 
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|