2017-10-05 7 views
1

기존 앱을 Firebase 인증으로 마이그레이션하는 작업을 해왔고 모든 사용자가 비밀번호를 재설정하지 않아도되도록 Firebase에 사용자 비밀번호를 가져와야합니다. 테스트 사용자를 설치하고 가져 왔지만 가져온 후에는 Firebase가 사용자의 비밀번호를 거부한다는 사실을 발견했습니다. 내가 "소금"을 추가하려고했습니다기존 사용자를 Firebase Auth로 마이그레이션

{"users": [{"localId": "5e722b92dd784e7fa37b98f94790a87e", "email": "[email protected]", "emailVerified": true, "passwordHash": "6ZoYxCjLONXyYIU2eJIuAw==", "displayName": "Test"}]} 

:

나는이 JSON 파일 제출하고있어 위에 "를"하지만 아무런 영향을 미치지 않습니다.

나는이 명령을 실행 해요 : 성공적으로 실행하고 사용자를 추가하지

firebase auth:import firebaseUsers.json --hash-algo=MD5 --rounds 0 --project projectname 

합니다. 그러나 사용자가 로그인하려고하면 제공된 비밀번호가 잘못되었거나 비밀번호가 설정되지 않은 것입니다.

"rounds"값은 내가 온라인에서 예를 든 것입니다. 나는 성공하지 않고 1, 4, 64도 시도했다.

이 테스트 계정의 암호는 abc123입니다.

import hashlib 
import codecs 
import base64 
m = hashlib.md5() 
m.update("abc123".encode('utf-8')) 
print (base64.b64encode(codecs.decode(m.hexdigest(), 'hex')).decode()) 

아무도 전에 내가 무슨 짓을했는지 볼이 과정을 거친 괜찮나 출력 할 수 6ZoYxCjLONXyYIU2eJIuAw의 ==를 실제로 수행합니다 나는 ABC123의 base64로 MD5는 6ZoYxCjLONXyYIU2eJIuAw ==이 파이썬 있음을 확인했습니다 여기서 뭐라구?

답변

0

문제의 코드 문제는 MD5의 16 진수를 base64로 변환 한 것입니다. 실제로 수행해야하는 것은 16 진수 문자열을 base64로 변환하는 것입니다. 위 예제를 사용하여

abc123의 MD5는 'e99a18c428cb38d5f260853678922e03'입니다.

m = hashlib.md5() 
m.update("abc123".encode('utf-8')) 
hexmd5 = codecs.decode(m.hexdigest(), 'hex') 
print(base64.b64encode(bytes(m.hexdigest(), 'utf-8')).decode()) 
: 당신은 동일 문자열로 base64로이 변환해야 'ZTk5YTE4YzQyOGNiMzhkNWYyNjA4NTM2Nzg5MjJlMDM ='는 여기에

는 문제의 코드의 수정 된 버전입니다