2016-03-22 29 views
0


Ich muss einige Klartext Passwörter mit SHA256 Base64 Passwörter ersetzen. Offensichtlich stimmt der von den Datenbankfunktionen generierte Hash nicht mit den von der Anwendung verwendeten überein. Zum Beispiel: meine Anwendung verwendet diese Funktion zum Erzeugen des Hash:Erzeuge SHA-256 Passwörter mit MariaDB

$ echo -n "admin" | openssl dgst -sha256 -binary | openssl base64 
jGl25bVBBBW96Qi9Te4V37Fnqchz/Eu4qB9vKrRIqRg= 

nun das gleiche Passwort mit der Datenbank:

select TO_BASE64(SHA2('admin',256)); 
OGM2OTc2ZTViNTQxMDQxNWJkZTkwOGJkNGRlZTE1ZGZiMTY3YTljODczZmM0YmI4YTgxZjZmMmFiNDQ4YTkxOA== 

Wie Sie sie paßt nicht sehen können! Irgendeine Hilfe ?
My DB Version: Server-Version: 10.0.23-MariaDB MariaDB Server

Antwort

1

entfernen -binary von echo -n "admin" | openssl dgst -sha256 -binary | openssl base64 und Sie werden die gleichen Ergebnisse.

mit -binary gibt es die tatsächlichen Binärdaten der Zeichenfolge sha256 zurück, wenn das was Sie wollen, müssen Sie das Ergebnis von SHA2('admin',256) in Binär konvertieren und dann TO_BASE64 darauf anwenden.

+2

Die genaue Abfrage der Hash Sie erhalten möchten ist wählen TO_BASE64 (UNHEX (SHA2 ('admin', 256))) Diese Antwort gibt ein wenig mehr über den SHA2 arbeitet http://stackoverflow.com/ a/22121627/947240 – dMcNavish

+0

Danke Das hat perfekt funktioniert. –

1
echo -n "admin" | openssl dgst -sha256 | awk '{ print $2; }' | openssl base64 
+0

sollten Sie überlegen, eine Erklärung für zukünftige Leser hinzuzufügen – ADyson