2017-12-11 13 views
0

cli 명령 auth : import를 사용하여 사용자를 firebase로 마이그레이션하려고합니다.Firebase auth : 가져 오기가 비밀번호를 가져 오지 않습니다. SHA256

내 암호 해시는 PHP 해시 함수의 salt가없는 SHA256입니다. hash ('sha256', $ password);

auth : import를 사용하면 내 사용자가 내 firebase 사용자에게 암호없이 추가됩니다. 내가 base64로하지 않고 diffrents --rounds와 함께/시도한 passwordHash 문자열을

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

(0/1/64/80는 ...)

내 user.json있다

passwordHash는 SHA256 ea71c25a7a602246b4c39824b855678894a96f43bb9b71319c39700a1e045222
Base64로 ZWE3MWMyNWE3YTYwMjI0NmI0YzM5ODI0Yjg1NT mypass
입니다 Y3ODg5NGE5NmY0M2JiOWI3MTMxOWMzOTcwMGExZTA0NTIyMg의 ==는

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

나는 MD5로 시도하고 그렇게 내가 여기없는 것 궁금 일하고 있었다.

감사합니다. 줄리앙.

+0

아마도 도움이 될 것입니다. https://github.com/firebase/firebase-tools/issues/337 – DoesData

+0

@DoesData 의견을 보내 주셔서 감사합니다. 나는 이미 이걸 읽었고, 나는 같은 오류 메시지를받지 못했다. 그러나이 스레드 때문에 differents rounds와 base64 string을 시도했다. – Julien

+0

@Julien, https://github.com/firebase/firebase-tools/issues/337이 도움이 될 수 있다고 생각합니다. 'ea71c25a7a602246b4c39824b855678894a96f43bb9b71319c39700a1e045222'는 실제로 base16으로 인코딩되었습니다. base64 문자열은'6nHCWnpgIka0w5gkuFVniJSpb0O7m3ExnDlwCh4EUiI ='이어야합니다. 나는 그것이 효과가 있다는 것을 확인했다. – wyhao31

답변

0

ea71c25a7a602246b4c39824b855678894a96f43bb9b71319c39700a1e04‌​5222은 실제로 16 진수 또는 16 진수입니다. 따라서 base64 문자열은 6nHCWnpgIka0w5gkuFVniJSpb0O7m3ExnDlwCh4EUiI=이어야합니다.


해시 된 문자열이 base16으로 인코딩 된 것을 어떻게 알 수 있습니까? 나는 당신이 사용하는 라이브러리가 그것을 나타내야한다고 생각한다. 내가 NodeJS를 사용하는 경우 예를 들어, 다음 코드는 당신이 가지고 문자열 (ea71c25a7a6...)를 생성하는 데 사용할 수 있습니다

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

내가 진수 바이트로 변환 .digest('hex') 전화를, 그래서 문자열을 16 진수 알고있다. 대신 base64을 지정하면 digest 함수 안에 올바른 base64 인코딩 문자열을 얻을 수 있습니다.