Код Middle Криптография на практике и JWT обновлено
Проверка пароля по хешу PBKDF2
Условие
Пароли хранятся строкой pbkdf2_sha256$<итерации>$<соль>$<хеш hex>, где хеш это hashlib.pbkdf2_hmac("sha256", пароль, соль, итерации) (пароль и соль в UTF-8).
Напишите verify_password(password, stored): верните True, если пароль подходит. Неизвестный алгоритм, неверное число частей, нечисловые или неположительные итерации дают False. Сравнивайте за постоянное время.
Примеры
verify_password("correct horse", "pbkdf2_sha256$1000$s4lt$59ff829a306e60f15cf4a232e32629fe7275463b2f246997bfc2d33d2cb3c6a4") // true
verify_password("correct horse!", "pbkdf2_sha256$1000$s4lt$59ff829a306e60f15cf4a232e32629fe7275463b2f246997bfc2d33d2cb3c6a4") // false
verify_password("пароль", "pbkdf2_sha256$500$соль$54f939ed37332dffcd4db2491a939a819d2a43a96e2da089fabd6b2159cd751c") // true
Как подойти
Подсказки: 2
stored.split("$")даёт 4 части.hmac.compare_digestработает и со строками ASCII.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.