Джанго Ша2-512
Я пытаюсь интегрировать Django с CKAN. На данный момент у меня есть проблема совместимости пароля.
CKAN passwod sample:
"pbkdf2_sha256$20000$ccNI0alYkFxm$JX5g4w9pd0SaRuviKespQBdv21vI0XLVxF4or7KmxYM="
Django password sample:
"$pbkdf2-sha512$19000$ZYxxbi1FCKHUmnOuFWKslQ$d.4ND4lr/.PnfFVWcTnm.Byhi08GS29TNXqaMj/x6E6OKMmZJCqd.o21THbGDVrwsUGpC9U1IemVWijKNtVToA"
Они используют разные методы хеширования. Идея состоит в том, чтобы переключить хеширование паролей в Django. Я нахожу sha2-512 в источнике Django, но как мне его активировать?
Пакет django_sha2 не будет работать для django 1.8/Python 2.7 Также я нашел https://gist.github.com/simonwhitaker/4474381 этот код, но где я могу его реализовать?
ОБНОВЛЕНИЕ. Поэтому я добавляю его в свой код и импортирую так:
PASSWORD_HASHERS = (
'ckan_user.hasher.PBKDF2SHA512PasswordHasher',
...
)
Теперь у меня есть это:
# django:
# "pbkdf2_sha512$20000$UjhMbV0VRLZo$BH0h5i+NDm15siMwnydGFOSt24szp1kGqMVppuIMDpsMyquYESh0GHzRA6rUfEnDKi5aKdd5VoxYVB9bG0ymdA=="
# ckan:
# "$pbkdf2-sha512$19000$ZYxxbi1FCKHUmnOuFWKslQ$d.4ND4lr/.PnfFVWcTnm.Byhi08GS29TNXqaMj/x6E6OKMmZJCqd.o21THbGDVrwsUGpC9U1IemVWijKNtVToA"
Последняя проблема - изменить формат пароля django по умолчанию:
<algorithm>$<iterations>$<salt>$<hash>
(добавьте "$ в начале") и переключите число итераций на 1900. Есть идеи?
Спасибо!
1 ответ
Переключение итераций должно быть таким же простым, как установка iterations
атрибут вашего хэша.
class PBKDF2SHA512PasswordHasher(PBKDF2PasswordHasher):
iterations = 19000
Предварять знак доллара в начале будет сложнее. Для написания пароля вы можете переопределить make_password
, вызов super()
и добавьте знак доллара. Тем не менее, тогда вам, вероятно, придется identify_hasher
внутренний метод, потому что Django не ожидает доллара в начале закодированного пароля.