2016-07-12 17 views
1

Ich habe eine MySQL-Datenbank, die alte Hash-Methode verwenden. Jetzt möchte ich mit AESquerty zu konvertieren OLD Hash-Passwort zu AES

SELECT HEX(AES_ENCRYPT('%s', 'key')); 

Soo dieses neuen Hash-Methode verwenden, kann mir jemand mit einer Abfrage helfen, alle Passwörter maded mit diesem Hash

SELECT PASSWORD('TEST'); 

Intro das neue Format konvertieren?

Ich denke, ist nicht möglich direkt von verschlüsseltes Passwort zu neuen .. soo vielleicht zuerst entschlüsseln (von alten) Abfrage dann verschlüsseln (zu neuen mit AES) Abfrage.

Grüße

+5

** Verschlüsseln Sie keine Passwörter **, wenn der Angreifer die DB erhält, erhält er auch den Verschlüsselungsschlüssel. Iterate über einen HMAC mit einer zufälligen Salz für etwa 100ms Dauer und speichern Sie das Salz mit dem Hash. Verwenden Sie Funktionen wie password_hash, PBKDF2, Bcrypt und ähnliche Funktionen. Es geht darum, den Angreifer dazu zu bringen, viel Zeit mit der Suche nach Passwörtern zu verbringen. – zaph

+0

Nein, nein nein. Er kann den Schlüssel nicht finden .. weil. Schlüssel ist intro C++ Programm gespeichert. Der Schlüssel wird nicht in mysql Datenbank oder intro php Funktion gespeichert. Der Schlüssel ist eine intro kompilierte Anwendung. – marc

+1

@marc Ändert nichts. Wenn sie diese Anwendung bekommen, bekommen sie den Schlüssel. Es gibt keinen Grund, etwas anderes als Hashing für Passwörter zu verwenden. –

Antwort

2

Encryption and hashing are very different operations. Die Verschlüsselung ist reversibel. Hashing ist in eine Richtung.

Darüber hinaus beinhaltet die correct way to store passwords nicht schnelle Hash-Funktionen wie SHA1 (die MySQL für ihre PASSWORD()-Funktion verwendet), geschweige denn AES, es beinhaltet eine langsame Hash-Funktion wie bcrypt.

Verwenden Sie password_hash() und password_verify(). Tun Sie es nicht in einer SQL-Abfrage. Lesen Sie this section, um zu erfahren, wie Legacy-Hashes in einen geeigneten Passwortspeicherungsalgorithmus migriert werden.