@Sharky: ja das war ein bisschen Unsinn
2^N (z.B. 2^128) bedeutet, dass es genau so viele unterschiedliche Hashwerte gibt. Da es aber mehr als 2^N unterschiedliche Dateien gibt, nämlich unendlich viele, müssen bei 2^N+1 ja mindestens 2 Dateien den gleichen Hashwert haben.
So ein Vergleich über Hashwerte ist also immer nur eine
notwendige Bedingung und keine
hinreichende. Das bedeutet:
1. Wenn zwei Dateien einen unterschiedlichen Hashwert besitzen, dann haben sie auch einen unterschiedlichen Inhalt.
2. Wenn zwei Dateien den gleichen Hashwert haben, dann
können sie gleich sein. Um es wirklich zu überprüfen, muss man die Dateien Bit für Bit vergleichen.
Und das gilt für jeden Hashcode! Egal ob MD5 oder SHA-1 oder was weiß ich.