Migrating Parse.com passwords to Django

2019-05-27 10:11发布

问题:

I am trying to migrate the data from Parse.com to our own servers. In order to do this, user passwords have to be migrated too. Parse.com uses standard bcrypt password encryption and passwords appear in the following format (How would I move passwords out of Parse to another server?):

$2a$10$UpoNYQ0YE/FRVrh3xt6QQeQ3HmTmskbW2Sfg5DX9fDQJnIHQd1LqG

How do I move this string to Django auth_user table so it will be accepted by Django

EDIT: I've tried adding BCrypt password hashers to settings according to shtuff.it suggestion below:

PASSWORD_HASHERS = (
    'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
    'django.contrib.auth.hashers.BCryptPasswordHasher',
    'django.contrib.auth.hashers.PBKDF2PasswordHasher',
    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
    'django.contrib.auth.hashers.SHA1PasswordHasher',
    'django.contrib.auth.hashers.MD5PasswordHasher',
    'django.contrib.auth.hashers.CryptPasswordHasher',
)

And tried adding bcrypt to the beginning of the string: bcrypt$2a$10$UpoNYQ0YE/FRVrh3xt6QQeQ3HmTmskbW2Sfg5DX9fDQJnIHQd1LqG This gives me "invalid salt" message from bcrypt hasher. I also tried playing with the string and bringing it to the form bcrypt$<iterations>$<salt>$hash form or some other combinations, but could not make the "invalid salt" message go away.

回答1:

Looks like you should be able to add bcrypt to PASSWORD_HASHERS in settings.py:

https://docs.djangoproject.com/en/dev/topics/auth/passwords/#using-bcrypt-with-django



回答2:

This is very stupid by me. I had to make sure that bcrypt in the initial string is followed by double $$: bcrypt$$2a$10$UpoNYQ0YE/FRVrh3xt6QQeQ3HmTmskbW2Sfg5DX9fDQJnIHQd1LqG. Marking shtuff.it answer, as it is an actually correct one.