Что должно быть в идеале $cost
быть в этом случае, чтобы предотвратить атаку грубой силой и даже ASIC или FPGA
$cost = '06';
$secret_key = bin2hex(random_bytes(64);
$store_data = crypt($secret_key), '$2a$.$cost.$'.bin2hex(random_bytes(16)).'$')
Scenerio
Компания предоставляет секретный ключ пользователя (), который сгенерирован по вышеуказанному коду$secret_key
) получить доступ снять деньги, и этот секретный ключ не должен быть угадан хакером.
$store_data
это строка, которую мы сохранили в нашей базе данных.
Так что если злоумышленник получит доступ к базе данных и узнает $store_data
переменная он не должен иметь возможность доступа $secret_key
,
Я использовал алгоритм bcrypt для хэширования, но я не уверен, что в этом случае cost = 6 достаточно безопасен.
В 1999 году, когда был разработан bcrypt, факторы стоимости в то время были установлены так, чтобы он по крайней мере 250 мс для вычисления хэша.
Это было основано на том факте, что в 1977 году на VAX-11/780 крипту можно было оценивать примерно в 3,6 раза в секунду. (т.е. 277 мс на пароль)
На моем настольном ПК:
Других решений пока нет …