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 шт):

Автор решения: svmitin

В settings.py нужно было добавить

PASSWORD_HASHERS = (
    'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher',
)

А хэш должен быть с двумя знаками $

md5$$e10adc3949ba59abbe56e057f20f883e
→ Ссылка