Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mehrere Strings mit gleichem MD5 Wert (https://www.delphipraxis.net/50251-mehrere-strings-mit-gleichem-md5-wert.html)

Neutral General 22. Jul 2005 14:09


Mehrere Strings mit gleichem MD5 Wert
 
Hallo,
Wie kann man mehrere verschiedene Strings erstellen die alle die gleiche MD5 Summe haben ?

Grüße
Michael

jfheins 22. Jul 2005 14:10

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 ;)

Neutral General 22. Jul 2005 14:12

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...

barf00s 22. Jul 2005 14:15

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]

Neutral General 22. Jul 2005 14:19

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;

sakura 22. Jul 2005 14:23

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:...

Beckman 22. Jul 2005 14:27

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

sakura 22. Jul 2005 14:28

Re: Mehrere Strings mit gleichem MD5 Wert
 
Zitat:

Zitat von Beckman
an solchen ideen ist eindeutig die komponentenvielfalt in delphi schuld.
dann weiss man nie, was man eigentlich alles so macht :P

Was hat das eine mit dem anderen zu tun? Bitte OT nicht hier posten, das verwirrt nur. Als Hinweis: Per Standard gibt es in Delphi keine MD5 Komponenten, des weiteren ist der MD5 eine mathematische Angelegenheit, Delphi ist nur das Mittel zur Umsetzung...

...:cat:...

Jan 22. Jul 2005 14:29

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ß

brechi 22. Jul 2005 14:33

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.

Dust Signs 22. Jul 2005 14:35

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

Neutral General 22. Jul 2005 14:38

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.

barf00s 22. Jul 2005 14:42

Re: Mehrere Strings mit gleichem MD5 Wert
 
Quersumme(13) = 1 + 3 = 4

Quersumme(123143522) = 1 + 2 + 3 + 1 + 4 + 3 + 5 + 2 + 2 = 23

brechi 22. Jul 2005 14:48

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:
var i, qs: integer;
begin
  qs := 0;
  for i := 1 to lenght(s) do qs := qs+ord(s[i]);
end;
dann muss halt qs immer z.b. 1360 sein

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;

Neutral General 22. Jul 2005 14:51

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.

Neutral General 24. Jul 2005 14:33

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:
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;
mit der Function check ich die Keys :

Delphi-Quellcode:
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;
so gehts in der praxis

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;

MrKnogge 24. Jul 2005 14:35

Re: Mehrere Strings mit gleichem MD5 Wert
 
Was genau funktioniert denn nicht ?

Neutral General 24. Jul 2005 14:40

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...

jfheins 24. Jul 2005 15:39

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 ?

Neutral General 24. Jul 2005 15:44

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 19:03 Uhr.

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