Проверьте хешированный пароль Moodle - PullRequest
0 голосов
/ 04 ноября 2018

Moodle сохраняет хешированные пароли в пользовательской таблице в следующем формате:

Если сохраненный пароль:

$2y$10$UB6vKrpw227eqVXj2PiPou9c0eRtxsdU02fo9.wc3VtsA2FI.gS6a
то:
$2y$ = идентификатор используемого алгоритма хеширования (crypt_blowfish), заключенный в знаки доллара.
10$ = стоимость использования этого алгоритма (две цифры) с последующим знаком доллара.
UB6vKrpw227eqVXj2PiPou = случайно сгенерированная безопасная соль (22 символа).
9c0eRtxsdU02fo9.wc3VtsA2FI.gS6a = хеш (31 символ).

У меня есть простой пароль в тексте. Я не могу понять, как проверить это с помощью Python.

1 Ответ

0 голосов
/ 04 ноября 2018

Это просто делается с помощью bcrypt:

pip install bcrypt

Тогда нужно просто вызвать функцию checkpw():

import bcrypt

hashed = b'$2y$10$UB6vKrpw227eqVXj2PiPou9c0eRtxsdU02fo9.wc3VtsA2FI.gS6a'

password = input('Enter password:').encode()
if bcrypt.checkpw(password, hashed):
    print('Correct password entered!')
else:
    print('Password is wrong!')

Обратите внимание, что bcrypt работает с байтами, а не со строками, поэтому пользовательский ввод должен проходить через .encode().

...