#php #хеширование
В мане по php столкнулся с такой функцией хэширования password_hash() в эту функцию передается три аргумента: пароль, алгоритм шифрования, дополнительные опции Дополнительные опции здесь передаются как ассоциативный массив...в одном примере мана написано так: $options = [ 'cost' => 11, 'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM), ]; Понятно что salt - это соль и под значением понимается функция которая генерирует эту соль, но мне неясно одно, что такое cost, и какую роль оно играет при шифровании?
Ответы
Ответ 1
Вот достаточно развернутый ответ на английском языке. А на Wiki есть описание алгоритма, где вы можете понять, в каком месте используется cost. Если коротко, то cost влияет на количество операций при получении хэша, как степень числа 2. При cost = 11 у вас будет 2**11 повторений алгоритма для вычисления.Ответ 2
Раньше различные хэширующие алгоритмы как MD5, SHA1 и SHA256 были спроектированы очень быстрыми и эффективными. При наличии современных технологий и оборудования, стало довольно просто выяснить результат этих алгоритмов методом "грубой силы" для определения оригинальных вводимых данных. Появилось такое понятие как Cost - стоимость вычисления хеша. Чем выше стоимость вычисления хэширующего алгоритма, тем больше времени требуется для взлома его вывода методом "грубой силы". По сути при cost = 13. Стоимость вычислений равна 2^13 итераций функции формирования ключа. Стандартный cost = 10 и вычисляется за миллисекунды, увеличение cost на 1, увеличивает время выполнения примерно в 2 раза. Например cost = 13 выполняется за 0.2 ms, а вот cost = 16 уже будет выполнен за несколько секунд.
Комментариев нет:
Отправить комментарий