2012-08-18 2 views
1

Можно создать дубликат:
hash() vs. crypt() function comparisonС PHP, почему мы используем crypt() для хеширования паролей вместо hash()?

Недавно я исследовал, как правильно сделать хэширования паролей в PHP. Один из лучших вариантов - использовать crypt(). Но почему бы нам не использовать hash()?

Основная причина, по которой я прошу об этом, заключается в том, что я создал функцию хэширования пароля, которая обертывает crypt(), и мне интересно, как назвать мою функцию. Сейчас его называют getHash(). Но я смеюсь, используя это имя, так как я обертываю crypt(). Если я использую getCrypt(), который не звучит отлично, потому что он предназначен для функции HASHING. Что я должен назвать своей функцией хэширования, которая обертывает crypt()?

ответ

3

Хеширование, используемое hash, предназначено для проверки данных (например, файлов), как правило, в виде контрольной суммы. Это fast, поэтому мы не используем его для защиты данных.

Crypt (при правильном использовании) использует алгоритм медленного хэширования. Причина, по которой медленный алгоритм хеширования важен, заключается в том, что это затрудняет кому-то принудительное использование хэша. Если алгоритм медленного хеширования занимает ровно 0,1 миллисекунды дольше, чем алгоритм быстрого хеширования, тогда попытка 10000 паролей займет второе место, и, конечно же, принудительное принудительное выполнение потребует миллионов попыток.

0

Я думаю, что мы в конечном итоге получаем здесь, что некоторые крипты предназначены для работы медленнее, а hash() относительно быстро сравнивается. Чем медленнее алгоритм, тем медленнее хакеры могут переборщить ваши пароли. К сожалению, медленнее лучше ... до точки :)

+0

Хеш также более желателен, поскольку шифрование легко обратимо при условии, что ключ. Единственный раз, когда вы хотите получить шифрование по хэшу, - это если вам нужно получить пароль позже (и зачем вам нужно?). – Gary

+0

@Gary Откуда взялось шифрование? Никто не обсуждал шифрование. –

+0

Моя ошибка, я неправильно понял. – Gary