我的算法看起来像这样:
$new_password = sha1($salt . $password . $email);
它运作良好,但我试图改变为sha1,因为我听到它更好,但它不会工作。那是为什么?
寄存器:
//generate a strong unique salt
$salt = uniqid(mt_rand());
$new_password = sha1($salt . $password . $email);
然后我在登录时重新拍摄
答案 0 :(得分:3)
您是否使用哈希密码存储盐?检查哈希时需要使用相同的盐 - 每个用户都应该有他们的电子邮件地址,盐和哈希存储。
答案 1 :(得分:0)
是的,sha1是比md5更好的哈希。很多时候,md5已经足够了......真的,你网站的“不安全”程度更多地取决于其他因素。
答案 2 :(得分:-1)
你想要一个盐的常量字符串,例如
$salt = "iodized sea salt"
编辑:这里的评论者和贬低者似乎不理解盐的概念。使用恒定盐当然不会破坏盐的目的,这使得您选择哈希算法(“SHA1 with such-and-such salt”)是私有的。这种盐可能很长,并且它的选择比uniqid(mt_rand())具有更多的熵。任何时候你都不能强奸长盐。如果您不清楚计算机安全性,但不提供任何其他好处,那么每用户盐可能会让您感觉更好。