【发布时间】:2011-06-14 15:36:47
【问题描述】:
我在这里读过一篇文章,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);
}
【问题讨论】:
-
您应该将密码存储为加盐哈希。奖励:有了哈希,你不必担心 unicode(仅 [a-f0-9])
-
@knittl:是的,我已经散列了我所有的密码。谢谢。
-
@lauthiamkok:散列值有什么格式?
-
@knittl:在一个租用廉价 AWS 实例来构建快速彩虹表的世界里,
sha1()的加盐哈希对你没有多大好处。sha1()算法太快了。 -
@andrew:总比不加盐或不散列好……
标签: mysql database-design collation password-protection