Mit MD5 und SHA-1 lassen sich versehentliche Beschädigungen / Änderungen an Dateien erkennen. Die Wahrscheinlichkeit, dass eine versehentlich geänderte Datei den gleichen MD5-Digest hat, ist eins zu 2 ^ 128 = 340.282.366.920.938.463.463.374.607.431.768.211.456. Die Wahrscheinlichkeit einer versehentlichen SHA-1-Kollision ist sogar noch geringer, eine in 2 ^ 160. Wenn wir davon sprechen, zufällige Übereinstimmungen in einer Sammlung von Dateien (bekannt als Geburtstagsproblem) zu finden, würden Sie ungefähr 2 64 = 18 Milliarden Milliarden brauchen, bevor eine MD5-Kollision wahrscheinlich wird. Beachten Sie, dass die Größe der Dateien keine Rolle spielt. Es kommt auf die Anzahl der Dateien an, auf die es ankommt.
Weder MD5 noch SHA-1 reichen aus, um sich vor böswilligem Ersetzen von Dateien zu schützen oder um eine zuverlässige eindeutige ID für Dateien bereitzustellen. Wenn Sie z. B. eine der beiden verwenden, kann Ihnen jemand eine Datei geben, den Hash-Digest berechnen lassen und Sie dann täuschen, indem Sie ihn gegen eine andere Datei mit demselben Hash austauschen. Oder senden Sie zwei Dateien mit demselben Hash, die Ihr System verwirren könnten.
Übrigens, die zufällige / böswillige Unterscheidung ist etwas locker. Angenommen, jemand hat die beiden PDF-Dateien gefunden, die Google mit demselben SHA-1-Hash erstellt hat, dachte "Das ist cool! Ich sollte sie für später speichern", und versuchte dann, Ihr System zu verwenden, um sie zu speichern und zu verteilen -von zufällig. Wenn so etwas denkbar ist, sollten Sie lieber mit SHA-256 gehen.
BEARBEITEN : BitErrant ähnelt dem, was ich im letzten Absatz beschrieben habe: Es ist ein Exploit gegen BitTorrent, wobei die Tatsache genutzt wird, dass BitTorrent SHA-1-Prüfsummen als IDs für Dateistücke verwendet.