Was ist der Unterschied zwischen den MD5, SHA-1, SHA-256 und SHA-512?
Das sind alles sog. Hash-Verfahren, also Verfahren, mit denen aus einer Menge an Daten ein Prüfwert erzeugt wird, der die Daten repräsentiert. Der Prüfwert ist viel kürzer als die Daten selbst. Selbst beim SHA-512 ist der Prüfwert "nur" 64 Byte lang.
Man kann den Prüfwert also jederzeit an einem anderen Ort speichern und dadurch, dass man für einen Datenstrom einen Prüfwert berechnet und diesen mit dem zuvor gespeicherten vergleicht, kann man sicherstellen, dass die Daten nicht geändert wurden.
MD5 ist einfach ein guter, aber einfacher Prüfmechanismus. MD5 hat jedoch den Nachteil, dass aus dem Prüfwert selbst Rückschlüsse auf die Daten möglich sind. In einigen Konstellationen, d. h. bei sehr wenig Daten können aus dem Prüfwert sogar die Daten rekonstruiert werden. Der größere Nachteil von MD5 ist allerdings, dass es mit endlichen Aufwand möglich ist, zu einem vorhandenen MD5-Prüfwert eine andere Nachricht zu erzeugen, die den gleichen Prüfwert hat. Damit ist dann der "Fingerabdruck" der Nachricht (und genau das ist ein Prüfwert) nicht mehr final sicher.
Hier setzen die SHA-Verfahren an. Bei den SHA-Verfahren handelt es sich um kryptografische Prüfwerte, d. h. aus den Prüfwerten lassen sich weder die Daten rekonstruieren noch ist es möglich, Rückschlüsse auf die Daten zu ziehen.
So viel zur Theorie. Tatsächlich hängt die Sicherheit eines kryptografischen Verfahrens jedoch immer auch von der Schlüssellänge (besser gesagt der Prüfwertlänge) ab. Wenn die Schlüssel zu kurz sind, können alle Varianten - ggf. mit Supercomputern - durchprobiert werden. SHA-1 (früher nur SHA genannt) war der erste Kandidat, dessen Schlüssellänge sich für einfaches Durchprobieren via Computer als zu kurz erwies. Damit war SHA nicht mehr sicher, man führte das Verfahren SHA-256 mit einem 32 Byte (256 Bit) langem Schlüssel ein. SHA-256 ist mit Homeequipment nicht zu knacken, für Supercomputer potentiell jedoch sehr wohl. Der SHA-512 erzeugt entsprechend einen nochmals doppelt so langen Schlüssel (Prüfwert).
Es geht bei den SHA-Verfahren also darum, aus einer Menge an Daten einen diese Daten repräsentierenden Schlüssel zu errechnen, ohne dass man aus der Bytefolge des Schlüssels Rückschlüsse auf die Daten ziehen kann.
Wenn Kryptographie keine Rolle spielt, ist MD5 noch immer sehr gut, denn das Verfahren ist sehr schnell.