Original von ivegotmail
mysql ist opensource. also schau dir den quellcode der PASSWORD() funktion an und du weißt was für ein algorithmus verwendet wird.
Was hat das mit OpenSource zu tun ?( ?( ?(
Das sind ganz normale Post-Befehle die an den Server geschickt werden und je nach dem mit MD5 (128-bit), SHA1 (168-bit) etc. verschlüsselt sind.
Beispiel MD5:
Die Berechnung bedarf mehrerer Schritte:
Schritt 1:
Zunächst muss sichergestellt werden, dass die Länge der Eingabedatei ein Vielfaches von 512 Bit ist. Dazu wird als erstes Füllbit eine 1 angehängt. Dann folgen soviel Nullen, dass noch 64 Bit fehlen um die geforderte Größe zu erreichen. Diese 64 Bit werden nun mit der Länge der Datei gefüllt, wodurch garantiert wird, dass verschiedene Nachrichten nach dem Auffüllen nicht identisch sind.
Schritt 2:
Nun werden vier sogenannte Verkettungsvariablen A, B, C und D initialisiert.
(hexadezimal dargestellt: A=0x01234567, B=0x89abcdef, C=0xfedcba98, D=0x76543210).
Schritt 3:
Die einzelnen 512 Bit langen Teilblöcke werden in sechzehn 32-Bit-Teilblöcke aufgeteilt und durch 4 Runden geschickt, die in jedem Fall gleich ablaufen. Zunächst werden die Variablen A, B, C und D in AA, BB, CC und DD kopiert.
Ablauf der Runden:
In jeder der Runden werden 3 der Variablen A, B, C und DD logisch verknüpft, mit einem solchen 32-Bit-Teilblock addiert. Dann wird noch eine Variable T sowie die 4. (nicht-verknüpfte) Variable addiert. Es folgt eine Links-Rotation um eine variable Anzahl Bits (vgl. Tabelle in Wie funktioniert MD5 (1/2)) und eine weitere Addition von einer der logisch-verknüpften Variablen, bevor das Ergebnis in der 4. Variablen gespeichert wird. (in Wie funktioniert MD5 (2/2) soll der Ablauf dieser Runden noch genauer dargestellt werden, aber als Überblick ist dies zunächst ausreichend)
Nun werden zu den Variablen A, B, C und D noch die Variablen AA, BB, CC und DD addiert. (es werden also die ursprünglichen Werte vor den 4 Runden noch zum Ergebnis addiert)
Dieser Schritt wird nun für alle 512-Bit-Blöcke (bestehend aus 16 32-Bit-Teilblöcken) durchlaufen.
Schritt 4:
Die Variablen A,B,C und D stellen nun den 128-Bit-Hashwert (Message-Digest) dar.
Alles klar?