2017-12-11 2 views
0

Ich versuche, Benutzer mithilfe des CLI-Befehls auth: import zum Firebase zu migrieren.Firebase-Authentifizierung: Import importiert kein Kennwort SHA256

Mein Passwort Hash ist ein SHA256 ohne Salz von PHP Hash-Funktion Hash ('sha256', $ Passwort);

Wenn ich auth: import benutze, wird mein Benutzer zu meinen Firebase-Benutzern hinzugefügt, aber ohne das Passwort.

firebase auth:import user.json --hash-algo=SHA256 --rounds=64 

Für die PasswordHash Zeichenfolge i mit/ohne base64 versucht haben und mit diffrents --rounds (0/1/64/80 ...)

Es ist mein user.json

PasswordHash ist mypass
SHA256 ea71c25a7a602246b4c39824b855678894a96f43bb9b71319c39700a1e045222
Base64 ZWE3MWMyNWE3YTYwMjI0NmI0YzM5ODI0Yjg1NT Y3ODg5NGE5NmY0M2JiOWI3MTMxOWMzOTcwMGExZTA0NTIyMg ==

{ 
    "users": [ 
    { 
     "localId": 1, 
     "email" : "[email protected]", 
     "emailVerified": true, 
     "passwordHash" : "ZWE3MWMyNWE3YTYwMjI0NmI0YzM5ODI0Yjg1NTY3ODg5NGE5NmY0M2JiOWI3MTMxOWMzOTcwMGExZTA0NTIyMg==", 
     "displayName" : "test", 
     "createdAt" : 1501452000000, 
    } 
    ] 
} 

Ich habe mit einem MD5 ausprobiert und es funktionierte so frage ich, was ich hier habe fehlt.

Danke, Julien.

+0

Vielleicht kann dies helfen https://github.com/firebase/firebase-tools/issues/337 – DoesData

+0

@DoesData Vielen Dank für den Kommentar. Ich habe dieses schon gelesen, ich habe nicht die gleiche Fehlermeldung erhalten, aber ich habe verschiedene Runden und Base64-String wegen dieses Threads versucht. – Julien

+0

@Julien, ich denke, https://github.com/firebase/firebase-tools/issues/337 kann helfen. 'ea71c25a7a602246b4c39824b855678894a96f43bb9b71319c39700a1e045222' ist tatsächlich Base16 codiert. Die Base64-Zeichenfolge sollte '6nHCWnpgIka0w5gkuFVniJSpb0O7m3ExnDlwCh4EUiI =' sein. Ich habe festgestellt, dass es funktioniert hat. – wyhao31

Antwort

0

ea71c25a7a602246b4c39824b855678894a96f43bb9b71319c39700a1e04‌​5222 ist tatsächlich Hex oder Base16 codiert. Also sollte die Base64-Zeichenfolge 6nHCWnpgIka0w5gkuFVniJSpb0O7m3ExnDlwCh4EUiI= sein.


Wie kann ich wissen, dass die Hash-Zeichenfolge Base16 codiert ist? Ich denke, die Lib, die du verwendest, sollte das anzeigen. Zum Beispiel, wenn ich NodeJS verwenden, kann der folgende Code verwendet werden, um die Zeichenfolge, die Sie bekam (ea71c25a7a6...) zu erzeugen:

const crypto = require('crypto'); 
let hash = crypto.createHash('sha256'); 
hash.update('mypass').digest('hex'); 

ich .digest('hex') nennen Bytes hex zu konvertieren, so dass ich weiß, dass die Zeichenfolge hex ist. Wenn Sie base64 anstelle von hex innerhalb der digest-Funktion angeben, können Sie die korrekte Base64-codierte Zeichenfolge abrufen.