Я прочитал здесь сообщение о том, что utf8_bin дает нам больше точности при сравнении символов, а utf8_general_ci - нет.
Интересно - есть ли у меня таблица, в которой хранятся имена пользователей и пароли, и мне нужно, чтобы они были точными или правильными, когда пользователь входит на мой веб-сайт.
Тогда следует ли мне использовать для этой цели utf8_bin?
Спасибо.
РЕДАКТИРОВАТЬ:
Кстати, это хеш-функция, которую я использую для ввода пароля,
function hash_sha512($phrase,&$salt = null)
{
//$pepper = '!@#$%^&*()_+=-{}][;";/?<>.,';
if ($salt == '')
{
$salt = substr(hash('sha512',uniqid(rand(), true).PEPPER_KEY.microtime()), 0, SALT_LENGTH);
}
else
{
$salt = substr($salt, 0, SALT_LENGTH);
}
return hash('sha512',$salt.PEPPER_KEY.$phrase);
}
sha1()
не принесут вам много пользы.sha1()
просто слишком быстрый алгоритм. - person Andrew Moore   schedule 24.01.2011sha1
делает это, задав для второго параметра значение true. Но тогда вам нужен соответствующий двоично-безопасный тип данных. См. Хранение хеш-значений SHA1 в MySQL. - person Gumbo   schedule 24.01.2011sha512()
та же проблема, что и уsha1()
. Это слишком быстро для использования в контексте безопасности. НЕ ПЫТАЙТЕСЬ РЕШИТЬ КРИПТОЛОГИЮ САМОСТОЯТЕЛЬНО. Доверьтесь экспертам в этой области и используйте PHP-фреймворк для хеширования паролей ... Он использует bcrypt и безопасен СЕГОДНЯ ... и будет в безопасности ЗАВТРА (с большим количеством раундов). - person Andrew Moore   schedule 24.01.2011