$salt = uniqid();
$crypt = md5($password , $salt);
$new_pass = $crypt.':'.$salt;
在数据库中:ot÷„[ªà%Ûʼn¹:17b8bc731c322c9e05a26666458117f4
这是语法错误吗?或者数据库没有设置正确的字符格式?
答案 0 :(得分:11)
您启用了raw_output
如果可选的raw_output设置为TRUE,则md5摘要将以原始二进制格式返回,长度为16。
更改
$crypt = md5($password , $salt);
^------ You moved the salt to raw_output
要
$crypt = md5($password . $salt);
^------ Should be this
出于安全原因,我不建议您使用md5
进行密码散列。 MD5被严重破坏,不再需要这么长时间才能找到适当的冲突或反向哈希。 一旦破解,哈希算法只会变得更糟,从来没有更好,因此选择一个完整的哈希算法会更好。
标准
更好的替代品