我的哈希算法有多安全?

时间:2014-10-08 17:22:41

标签: php security md5

我正在写一个供个人使用的网站(我希望但不要认为有人会来这里),并开发了以下算法:

function encryptPassword($username, $password) {
    $username=md5($username);
    $password=md5($password);

    $newpass = substr($username, 0, 5) . $password . substr($username, 5 );
    $newpass = md5($newpass);

    return $newpass;
}

因为它仍然是一种'知道密码而你是'那种系统(尽管如此),我认为在数据库中隐藏密码会更好。

我以前使用过简单的MD5x1算法(基本上是:md5(传递)并完成)但是那些有权访问数据库的人很容易就能反向散列它。这样我认为你无法反向哈希这个东西。

1 个答案:

答案 0 :(得分:5)

不是。

  1. MD5在加密方面很弱。
  2. 盐应该是随机的,而不是来自已知值。
  3. 这一天,打破一轮哈希是微不足道的。
  4. 上述解决方案:

    1. 使用更好的算法,最好是SHA2或更好。
    2. 生成随机盐。
    3. 哈希多轮
    4. 哦等等,已经有一个内置在PHP中的整个库可以做到这一点,除了方式更好。它是password_hash(),如果你使用的是早于5.5的PHP版本,那么password_compat可以将它向后移植到5.3.7,如果那么仍然不起作用你真的需要更新你的PHP安装。

      最后,除非你在密码学方面接受过大学教育,否则你绝不应该尝试“推出自己的”哈希或加密方案。 99%的时间你最终得到的安全系统远远低于使用符合行业标准的系统。