MD5 в Django. Перенос пользователей из старого сайта
Делаю перенос пользователей из старого PHP сайта на новенький Django. Загвоздка вот в чем, у пользователей пароли были в md5. Django в md5 вроде как тоже умеет, но я что-то явно делаю не так
Скажем был хэш пользователя e10adc3949ba59abbe56e057f20f883e
Я его перенес в Django так: md5$e10adc3949ba59abbe56e057f20f883e
И пробовал даже вот так: md5$$e10adc3949ba59abbe56e057f20f883e
В settings.py добавил:
PASSWORD_HASHERS = (
'django.contrib.auth.hashers.MD5PasswordHasher',
)
Не работает. Хэш e10adc3949ba59abbe56e057f20f883e сгенерировал самолично, из "пароля" 123456 и сохранил в таблицу auth_user:
import hashlib
hash_object = hashlib.md5(b'123456')
print(hash_object.hexdigest())
>> e10adc3949ba59abbe56e057f20f883e
После чего я удалил и заново создал суперпользователя с тем-же паролем
Django из 123456 сотворил такой хэш: md5$rPy8gTw8whLL$5be80da40b081fe50fabe467e1ccba69
Очевидно, что между двумя долларами лежит соль пароля rPy8gTw8whLL:
import hashlib
hash_object = hashlib.md5(b'rPy8gTw8whLL123456')
print(hash_object.hexdigest())
>> 5be80da40b081fe50fabe467e1ccba69
Как перенести пароли? В старом проекте нет никакой соли, только md5-хэши, а Django без соли пароли не воспринимает
Ответы (1 шт):
В settings.py нужно было добавить
PASSWORD_HASHERS = (
'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher',
)
А хэш должен быть с двумя знаками $
md5$$e10adc3949ba59abbe56e057f20f883e