2
$salt = uniqid();
   $crypt = md5($password , $salt);
   $new_pass = $crypt.':'.$salt;

在数据库中:­ot÷„[ªà%Ûʼn¹:17b8bc731c322c9e05a26666458117f4

这是语法错误吗?或者数据库没有设置正确的字符格式?

4

1 回答 1

11

您启用了raw_output

PHP文档

如果可选 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 被严重破坏,不再需要很长时间才能找到合适的冲突或反向哈希。一旦被破坏,哈希算法只会变得更糟,永远不会更好,因此最好选择一个完整的哈希算法。

标准

更好的选择

于 2012-10-11T00:03:28.683 回答