![]() |
Mehrere Strings mit gleichem MD5 Wert
Hallo,
Wie kann man mehrere verschiedene Strings erstellen die alle die gleiche MD5 Summe haben ? Grüße Michael |
Re: Mehrere Strings mit gleichem MD5 Wert
Prinzipell eher nicht, da dies vermieden wurde - es gibt aber inzwischen einige Kollisionen ...
Aber erstellen geht eigendlich nur per BruteForce ;) |
Re: Mehrere Strings mit gleichem MD5 Wert
Weil ich wollte sone Art CD-Key-Generator fürn Programm von mir machen.
Es soll dann halt irgendein String generiert werden und mein Programm würde dann nur nach der MD5 Summe gucken und wenn die stimmt grünes Licht geben... |
Re: Mehrere Strings mit gleichem MD5 Wert
warum sollten dann _unterschiedliche_ "cdkeys" den _gleichen_ md5 hash haben?
[edit=sakura] Später kommenden OT-Beitrag entfernt :!: Mfg, sakura[/edit] |
Re: Mehrere Strings mit gleichem MD5 Wert
Beispiel :
CD-Key1 : CSDNKSHDJKHGSKGD CD-Key2 : ireotdkjfgdklfjs Wenn diese beiden Strings den gleichen MD5-Wert hätten müsste ich nur
Delphi-Quellcode:
const Wert = KKS454SDS
if MD5(CDKey) = Wert then CDKey := richtig; |
Re: Mehrere Strings mit gleichem MD5 Wert
Es geht, allerdings sind erzeugt statistisch gesehen nur jeder 2^128-te (das ist ca 340282366920938463463374607431770000000. ) Datenstream einen identischen Hash. Von daher ist der Ansatz eher unpraktisch, da die Keys schon sehr lang werden müssten, damit Du das erreichst. :arrow: Einen andere Idee suchen.
...:cat:... |
Re: Mehrere Strings mit gleichem MD5 Wert
an solchen ideen ist eindeutig die komponentenvielfalt in delphi schuld.
dann weiss man nie, was man eigentlich alles so macht :P |
Re: Mehrere Strings mit gleichem MD5 Wert
Zitat:
...:cat:... |
Re: Mehrere Strings mit gleichem MD5 Wert
Ich kann dir zwar nicht sagen wie sicher das ist, aber theoretisch ist es ja kein problem dir ein Hashverfahren zu schreiben, welches ineffektiver ist, was die Kollisionsvermeidung angeht, als MD5.
Ich habe mal ein Hashverfahren geschrieben was genau das gegenteil macht, es sollte nach bestimmten Vorgaben möglichst wenig Kollisionen erzeugen. Habe damit sogar einen Preis gewonnen :] Wenn du den source haben willst kann ich ihn ja mal posten. aber ich wiederhole nochmal: ich weiss nicht wie sicher sowas ist, also ich nehme mal an, dass das durch Bruteforce extremst einfach zu cracken ist. Gruß |
Re: Mehrere Strings mit gleichem MD5 Wert
Gerade das Erzeugen von einem String von einem Hashwert soll ja nicht ermöglicht werden.
Könnte man das würde MD5 als "geknackt" gelten. Am besten ist wenn du einfach ne quersumme oder sowas erstellst, die muss dann halt immer gleich sein. |
Re: Mehrere Strings mit gleichem MD5 Wert
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab sowas auch mal gemacht - is aber schon einige Zeit her. Ebenfalls keine Ahnung, wie sicher es ist - ob es Kollissionen erzeugt kannst du ja ausprobieren :mrgreen:
Dust Signs |
Re: Mehrere Strings mit gleichem MD5 Wert
Wie meinst du das mit der Quersumme ?
Ach ja : Ich will das Programm ja (falls es nicht so gut wird wie ich es mir vorstelle^^) nicht verkaufen... Das Programm werden wahrscheinlich eh nur ein paar Freunde von mir benutzen :mrgreen: Das mit dem CD-Key soll halt nur etwas professionell aussehen und verhindern das einer mehr als ein Account in meinem Programm hat. |
Re: Mehrere Strings mit gleichem MD5 Wert
Quersumme(13) = 1 + 3 = 4
Quersumme(123143522) = 1 + 2 + 3 + 1 + 4 + 3 + 5 + 2 + 2 = 23 |
Re: Mehrere Strings mit gleichem MD5 Wert
nehmen wir an du hast nen string "ABCDEFG" dann addiert du alle ordinalwerte von den ascizeichen zusammen
Delphi-Quellcode:
dann muss halt qs immer z.b. 1360 sein
var i, qs: integer;
begin qs := 0; for i := 1 to lenght(s) do qs := qs+ord(s[i]); end; oder du nimmst ne zahl und prüfst ob die durch ne primzahl dividiert werden kann
Delphi-Quellcode:
var i: integer;
begin i := strtointdef(edit1.text,0); if i <> 0 then begin if i mod 1337 = 0 then //gültig end; end; |
Re: Mehrere Strings mit gleichem MD5 Wert
@ brechi : danke ich glaube das reicht für mich.
@ barf00s : Ich weiß schon was normalerweiße eine Quersumme ist (Sollte man mit 16 wissen ;)) Aber da man von Strings normalerweiße keine Quersumme erstellen kann hab ich gefragt wie das mit Strings gehen soll. |
Re: Mehrere Strings mit gleichem MD5 Wert
Ich hab mir jetzt eine Function gebaut die CD-Keys generieren soll aber es funktioniert nicht richtig -.-
Delphi-Quellcode:
mit der Function check ich die Keys :
function CreateKey : String;
var qs : Integer; r : Integer; s : String; begin qs := 0; repeat r := random(25)+65; s := s+ Chr(r); // Zufälligen buchstaben hinzufügen qs := qs + r; // der Quersumme hinzufügen if qs + 65 > 974 then begin // falls Kein "A" mehr reinpasst qs := qs - r; // Quersumme eins zurücksetzten delete(s,length(s)-1,1); // String auch den letzten buchstaben löschen s := s + chr(975-qs); // und den buchstaben hinzufügen das es passt qs := qs + (975-qs); // und das auch zur Quersumme hinzufügen end; until qs = 975; Result := s; end;
Delphi-Quellcode:
so gehts in der praxis
function IsRight(S : String) : Boolean;
var i, qs: integer; begin qs := 0; for i := 1 to length(s) do begin qs := qs+ord(s[i]); end; if qs = 975 then Result := true else Result := false; end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin Edit1.Text := CreateKey; end; procedure TForm1.Button2Click(Sender: TObject); begin if IsRight(Edit1.Text) then ShowMessage('Stimmt :)'); end; |
Re: Mehrere Strings mit gleichem MD5 Wert
Was genau funktioniert denn nicht ?
|
Re: Mehrere Strings mit gleichem MD5 Wert
Ach so hups hab ich ganz vergessen ^^
Also die Strings haben nicht alle die gleiche Quersumme -.- sie werden zwar generiert aber die Quersumme ist irgendwie immer verschieden. Nicht drastisch aber dennoch verschieden... |
Re: Mehrere Strings mit gleichem MD5 Wert
Schau mal:
Delphi-Quellcode:
if qs + 65 > 974 then begin // müsste es nicht > 975 heißen ??
delete(s,length(s)-1,1); // sicher, dass du den vorletzten Buchstaben löschen möchtest ? |
Re: Mehrere Strings mit gleichem MD5 Wert
Lol Thx... Da ist bei mir irgendwie ein Fehler in der Logik :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:49 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