Allgemeines 21.918 Themen, 147.236 Beiträge

Was genau sind MD5 Prüfsummen? Und wie "prüft" man damit?

Silent Bob / 13 Antworten / Flachansicht Nickles

hallo allerseits.

was genau sind md5 prüfsummen? angeblich kann man damit ja überprüfen, ob z.b. eine runtergeladene datei in ordnung ist.

aber wie prüft man sowas? wie setzen sich prüfsummen zusammen? und was sind "Hash-Werte"? (den begriff höre ich des öfteren mal in verbindung mit "md5")

vielen dank

bei Antwort benachrichtigen
xafford Silent Bob „Was genau sind MD5 Prüfsummen? Und wie "prüft" man damit?“
Optionen

zuerst mal zu hash....hash ist nichts anderes als eine prüfsumme für eine menge von daten, unabhängig von der art, wie sie erzeugt wurde. md5 ist eine spezielle art der hashfunktionen. dabei wird aus einer menge von daten für die jeweiligen datenblöcke ein hashwert nach einem festen algorithmus erzeugt. falls es dich interessiert, der algorithums sieht flgendermaßen aus:
A := h0
B := h1
C := h2
D := h3
FOR t = 0 TO 63 DO
BEGIN
T := B + ((A + ft(B,C,D) + W(t) + Kt), Rk)
B := A
A := D
D := C
C := T
END
h0 := h0 + A
h1 := h1 + B
h2 := h2 + C
h3 := h3 + D

wobei Ft eine funktion ist, die für 4 wertebreiche (verschiedene stufen) einzeln definiert ist:

Ft(x,y,z):=(x^y)v((-,x)^z) für 0 Ft(x,y,z):=(x^y)v(x^z)v(y^z) für 16 Ft(x,y,z):=x+y+z (kein plus, sondern skalarprodukt, wenn ich mich recht erinnere) für 32 Ft(x,y,z):=y+(xv(-;z)) (wieder das skalarprodukt) für 48 und Kt sind Konstanten, abhängig von der stelle des algorithmus die über:
Kt:=|sin(t)|*230
definiert sind.
grundgedanke von md5 ist, daß es möglichst unwahrscheinlich ist, zwei grundgesamtheiten an daten zu finden, die den selben hashwert besitzen, der hashwert also möglichst speziell und kennzeichnend für die date ist, und daß es unmöglich ist mit anderen als brute force methoden aus dem hashwert und der kenntnis des algorithmus das urbild der daten wieder herzustellen.
nun mal ein ganz banales beispiel. du hast die datenmenge:
12345678 und willst daraus eine prüfsumme erstellen. du wendest also einen algorithmus auf diese datenmenge an, hier mal als beispiel einen ganz banalen, die quersumme:
1+2+3+4+5+6+7+8=36
dies ist allerdings ziemlich unsicher, da sich mit einfachen mitteln unzählige urbilder erzeugen lassen, die den selben hashwert haben, man muß den algorithmus also verfeinern:
aufteilen in datenblöcke:
1 2
3 4
5 6
7 8
einzelne quersummen bilden:
3 7 11 15
1 und 3 addieren :14
2 und 4 addieren :22
1 und 4 addieren :18
2 ud 3 addieren :18
die zahlen jeweils mit einer konstanten multipilieren und anschließen addieren.
jetzt wird es schon schwerer, einen 2. datensatz herzuführen, der genau den selben hashwert besitzt (was ich vergessenhabe ist, daß auch die größe der ursprünglichen datenmenge mt einbezogen wird).
es wird allerdings auch immer schwerer, die urprungsdaten aus dem errechneten hashwert zu ermitteln (was auch nicht sinn ist).
wenn nun allerdings die daten übermittelt werden und dazu ihr hashwert und die daten werden bei der übermittlung beschädigt, so stimmen grundmenge und hash nicht mehr überein, es steht also fest, daß die ursprungsdaten nicht mehr korrekt sind.
ich hoffe die erklärung bringt dir was, sie ist leider auch ziemlich unprofessionell und ich hoffe nciht allzu verkehrt ;o)

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen