Джанго Ша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 не ожидает доллара в начале закодированного пароля.

Другие вопросы по тегам