hi,
für wichtige Daten, wie Passwörter usw. sind md5s nicht geeignet, da sie auf jedem System gleich sind. Gibt ja bald für alle Keys davon schon Tables zum zurück übersetzen. Einfach mal in Google reinkopiert und das entschlüsselte Passwort wird angezeigt. (Bei komplizierten nicht immer der Fall, aber google hat auch nicht jedes einzelne indiziert). Zudem hat md5, wie viele andere Verschlüsselungen davor, durch die Hash eigenschaft, das Problem, dass 2 klartext wörter verschlüsselt das selbe ergeben können. (Gibt da auch öffentliche Projekte wo das berechnet wurde!) (heißt glaub ich kollision der fall!
Für Passwörter sind also nur Salt Verschlüsselungen (Gesalzen) geeignet, bei der auch noch externe Keys reinspielen und bei der teile des strings zum vergleichen notwendig sind. (meist ist die Zeit in millisekunden mit eingerechnet). Dadurch wirst du für abcd beim ersten mal was anderes wie beim 2. mal rausbekommen.
Soviel zu dem Ausflug ;)
Möchte man nur irgendwelche zufallszahlen damit übermitteln, um z.b. das Formular abzusichern (damit es wirklich vom Formular kommt und nicht von wo anders). Dann reicht md5 auf jeden Fall aus. Da reicht ja sogar die microtime direkt.
Somit je nach Anwendungsfall. sha1 kann wie alle Hashwerte durch Rainbowtables geknackt werden. Grade bei Passwörtern ist die Aufgabe für 1-20 Stellen nicht so unrealisitisch (Bei großen Servern!!!). Dürfte aber Kollisionssicherer sein als md5.
Als ergänzung dazu:
http://de.wikipedia.org/wiki/Secure_Hash_Algorithm#SHA-2
Gruß Niklas
Man muss nicht alles wissen, man sollte aber wissen, wo das nicht gewusste zu finden ist.