将Parse.com密码迁移到Django

2 投票
2 回答
1054 浏览
提问于 2025-04-18 03:10

我正在尝试把数据从Parse.com迁移到我们自己的服务器。为了做到这一点,用户的密码也必须一起迁移。Parse.com使用的是标准的bcrypt密码加密,密码的格式如下:

$2a$10$UpoNYQ0YE/FRVrh3xt6QQeQ3HmTmskbW2Sfg5DX9fDQJnIHQd1LqG

我该如何把这个字符串转移到Django的auth_user表中,以便Django能够接受它呢?

编辑:我根据shtuff.it的建议,尝试在设置中添加了BCrypt密码哈希器:

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',
)

然后我还尝试在字符串前面加上bcryptbcrypt$2a$10$UpoNYQ0YE/FRVrh3xt6QQeQ3HmTmskbW2Sfg5DX9fDQJnIHQd1LqG。但是这让我收到了“无效的盐”消息,来自bcrypt哈希器。我还尝试对字符串进行一些调整,把它变成bcrypt$<iterations>$<salt>$hash的形式或者其他组合,但始终无法消除“无效的盐”消息。

2 个回答

2

我真是太傻了。
我得确保在最开始的字符串中,bcrypt 后面要跟着两个$$:bcrypt$$2a$10$UpoNYQ0YE/FRVrh3xt6QQeQ3HmTmskbW2Sfg5DX9fDQJnIHQd1LqG
我把shtuff.it的回答标记为正确,因为它确实是对的。

2

看起来你应该可以在settings.py文件中把bcrypt添加到PASSWORD_HASHERS里:

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

撰写回答