MD5 + Salt给了我一些奇怪的角色

时间:2012-10-11 00:02:17

标签: php mysql security

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

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

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

1 个答案:

答案 0 :(得分:11)

您启用了raw_output

PHP DOC

  

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

标准

更好的替代品