Welchen Algorhytmus benutzt Mysql?

Soo..
Eine kleine Frage, welchen Algo benutzt Mysql um die Passwörter der Mysql User in der Tabelle `mysql` zu verschlüsseln? :)
 
Das müsste die SQL-Funktion PASSWORD() sein.

Welcher Algo das ist, weiss ich auch nicht so genau, aber der wert ist nur 16 zeichen lang.


mfg ba2
 
Da steht leider auch nicht welcher Algorithmus genutzt wird.

Ich suche schon ziemlich lange finde aber auch nix gescheites.
 
mysql ist opensource. also schau dir den quellcode der PASSWORD() funktion an und du weißt was für ein algorithmus verwendet wird.
 
http://dev.mysql.com/doc/refman/5.1/de/password-hashing.html
Seit MySQL 4.1 erzeugt die geänderte PASSWORD()-Funktion einen 41 Byte langen Hash-Wert:

mysql-4.1.20/libmysql/password.c
The new authentication is performed in following manner:

SERVER: public_seed=create_random_string()
send(public_seed)

CLIENT: recv(public_seed)
hash_stage1=sha1("password")
hash_stage2=sha1(hash_stage1)
reply=xor(hash_stage1, sha1(public_seed,hash_stage2)

// this three steps are done in scramble()

send(reply)


SERVER: recv(reply)
hash_stage1=xor(reply, sha1(public_seed,hash_stage2))
candidate_hash2=sha1(hash_stage1)
check(candidate_hash2==hash_stage2)

Weiteres steht in der Datei ab Zeile 410...
 
Original von v01d
mysql benutzt md5
naja, es gibt bei mysql zwar auch die MD5 funktion zum verschlüsseln der passwörter, aber wenn von mysql speziell die rede ist, ist wohl eher die mysql eigene PASSWORD funktion gemeint, welche je nach version einen 16 bzw 41 byte langen hash erzeugt, wobei es sich nicht um einen md5 hash handelt.

also im speziellen kommts halt drauf an welche hash funktion der jeweilige programmierer eigentlich verwendet hat (password, md5, sha1).
 
Es geht um die Mysql Interne Tabelle `mysql` in der werden die Mysql user gespeichert.
Bei mir aufm Homserver handelt es beim Passwort des Users D**** um 6d707493276a8*** also ein 16 Stelliger Hash.
Es scheint sich also um die Mysqls eigene Verschlüsselung zu handeln.
In was ist den Mysql geschrieben?
Werde gleich mal gucken, ob ich mich da im Source zurechtfinden kann :

Edit:
@lagalopex
Und in der alten MYsql Version? :)
 
Hallo,
Original von DevilzimtiEdit:
@lagalopex
Und in der alten MYsql Version? :)
Alte MySQL-Version-Source runterladen, die passwort.c öffnen, und nach dem äquvialent dafür suchen.

Sonst in der neuen passwort.c müsste die alte Funktion auch implementiert sein, denn man kann in der Config ändern, ob man die neue, oder doch die alte Variante verwenden möchte.

Außerdem gibts in der neuen Version auch den MySQL Befehl: OLD_PASSWORD
 
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? :D
 
Zurück
Oben