Поскольку механизм bcrypt:
>>> myhash = bcrypt.hashpw('testpassword', bcrypt.gensalt(12))
>>> myhash
'$2a$12$K1hnCm5z74QtXaynv4.S8.i1FK9xjRr7JSPCRCyB9zpv8xZznZGFi'
>>> bcrypt.hashpw('testpassword', myhash)
'$2a$12$K1hnCm5z74QtXaynv4.S8.i1FK9xjRr7JSPCRCyB9zpv8xZznZGFi'
Я хочу использовать его для авторизации. Проблема в том, что я хочу сделать это из клиента, поэтому мне нужна часть salt в клиенте.
Я подумал, что если я использую свой собственный gensalt(username)
, который генерирует соль из имени пользователя, для клиента может быть полезно всегда использовать одну и ту же соль, отличную от других пользователей.
Это хорошее приближение к bcrypt и для моего проекта, или я нарушаю безопасность в механизме bcrypt?
Я думаю, что если кто-то хочет расшифровать пароль, это невозможно с помощью радужных таблиц, потому что он должен использовать по одной для каждого пользователя. Я недостаточно опытен в вопросах безопасности, чтобы знать, будет ли это хорошо. Возможно, hashpw
достаточно быстр, чтобы выполнять брутфорс на ПК.