Moin!
Wenn suit sagt, dass durch reines Kürzen des Hashes die Kollisionswahrscheinlichkeit "signifikant ansteigt" (was ich interpretiere als "über die von dir berechnete Wahrscheinlichkeit hinaus), dann müsste er wissen, dass z.B. die letzten Ziffern anders gebildet werden als die erste.
Dann könnte man die ersten Ziffern weglassen und die Kollisionswahrscheinlichkeit würde nicht signifikant ansteigen? Man kann dicke Bücher über Hashalgorithmen lesen aber ich glaube im Verhältnis zu dem signifikanten Unterschied zwischen der originalem MD5-Hash und dessen Verkürzung auf 13 Stellen ist der Unterschied, ob man die ersten oder die letzten 19 Stellen streicht oder eine jede anderen Kürzungsvorschrift anwendet kaum noch bemerkbar. Fakt ist, dass selbst kleinste Veränderungen am Text zu einer Änderung quer durch den gesamten Hash führen, was darauf schließen lässt, dann jeder Algorithmus der _blosen_ Kürzung auf die gleiche Stellenzahl zu einer annähernd gleich erhöhten Kollisionswahrscheinlichkeit führt.
Nun, statt rein zu kürzen könnte ja auch die Bildungsvorschift verändert werden. md5 kennt Ziffern und kleine Buchstaben. Erhöht man auf Ziffern, Kleine Buchstaben und große Buchstaben hat man nicht 36 sondern 62 "Ziffern".
36^32 = 63340286662973277706162286946811886609896461828096
36^13 = 170581728179578208256
62^13 = 200028539268669788905472
Das kann man weiter treiben und 8 Bit (ein Byte) voll ausnutzen:
256^13= 20.282.409.603.651.670.423.947.251.286.016
Nutzt man die Busbreite eines 64-Bit-Prozessors aus, dann kommt man auf:
18446744073709551616^13 =
28638903918474961204418783933674838490721739172170652529441449702311\
06400535290415934528426582462837542935950921899972007439686075707337\
67004450260415645796205128743079792121022668012614789787762450400082\
31745247475930553606737583615358787106474295296
Texte bis zur ersten Kollison. Trotz der Kürzung auf 13 Stellen wäre eine Kollision sehr viel unwahrscheinlicher. Eine Schwierigkeit sehe ich dann aber in dem der Menschheit verfügbaren und für Menschen merkbaren Zeichenvorrat. Immerhin soll man das Ergebnis eines Hashes auch ausdrucken können um es auf einem gänzlich anderen Kanal (z.B. per Bote) transportieren zu können, damit festgestellt werden kann, ob ein über den ersten Kanal übermittelter "Text" unverändert ist.
Merke: Man kann einen Hash mit 13 Stellen so sicher machen wie einen mit 32 Stellen, wenn man den Algorithmus so verändert, dass er einen größeren Zeichenvorrat nutzt.
Die Fehler, die md5 unzweifelhaft hat, treten übrigens hinter den gezeigten Zahlen zurück. Das Hauptproblem von md5 ist die Vorhersagbarkeit: Es ist unter bestimmten Voraussetzungen möglich zwei Texte mit gleichem Hash (das ist die erwähnte Kollision) zu _generieren_.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix