Пересматривая свой "вопрос", чтобы не шуметь аборигенов.
Кажется, что в наши дни в Интернете так много ресурсов (включая SO), что найти «» ответ на вопрос может быть легко, но как определить, действителен ли этот ответ или даже актуален?
В частности, одна область, о которой часто спрашивают, - это как правильно справиться с хешированием и шифрованием с помощью PHP для подготовки в хранилище базы данных. Один из распространенных ответов на SO всегда выглядит так: «Вы уже были на php.net?». Хотя я понимаю, что обычно возникает вопрос, в котором кто-то задает простейшие вопросы, я начал обнаруживать, что некоторые описания кажутся противоречащими друг другу, и, что более важно, пользовательские примеры устарели (многие из них относятся к 2008-2009 гг.).
Например: при поиске того, почему и как использовать хеширование паролей: http://www.php.net/manual/en/faq.passwords.php#faq.passwords.fasthash
Таким образом, я узнал, что sha1 и md5 - это быстрые и эффективные с вычислительной точки зрения методы хеширования, они больше не подходят для хеширования паролей. Предлагаемый метод - использовать функцию crypt ().
Когда вы узнаете больше о crypt () и, в частности, о хешировании blowfish, правила, изложенные на странице, следующие:
http://www.php.net/manual/en/function.crypt.php
- начни мою соль с $ 2a $
- продолжить с двумя числовыми значениями (пользователь ниже указал важность этого, тогда как php.net - нет)
- следовать с $
- введите 22 буквенно-цифровых символа
Дальнейшее чтение дает пример:
<?php
if (CRYPT_BLOWFISH == 1) {
echo 'Blowfish: ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n";
}
?>
Кажется, что пример на той же странице не соответствует правилам, которые он нам только что сказал (26 символов после «$ 2a $ 07 $».
Возврат:
Blowfish:
$ 2a $ 07 $ usesomesillystringfore2uDLvp1Ii2e. / U9C8sBjqp8I90dH6hi
по сути, сама строка действительно изменяется, но почти все мое значение SALT (первые 22 символа, упомянутые выше) остается широко открытым. Разве это не упростило бы определение моей фактической строки?
Что еще более важно, это только один пример, но, в конечном счете, насколько сильно следует полагаться на такие ресурсы, как PHP.net?
Как однажды сказал мой друг Мугату: «Я чувствую, что принимаю безумные таблетки».
Примечание: упомянутые выше страницы были отредактированы с момента моей первоначальной публикации, поэтому я не могу гарантировать, что ничего не изменилось с момента предоставления моего исходного вопроса и примеров.