我的哈希算法有多安全?

Dia*_*ndo -2 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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Sam*_*tch 5

不是.

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

以上解决方案:

  1. 使用更好的算法,最好是SHA2或更好.
  2. 生成随机盐.
  3. 哈希多轮

哦等等,已经有一个内置在PHP中的整个库来执行此操作,除非方法更好.这是password_hash(),如果你正在使用PHP的版本早于5.5,当它被实施有password_compat其反向移植它早在5.3.7,如果仍然不工作,你真的需要升级你的PHP安装.

最后,除非你在密码学方面接受过大学教育,否则你不应该试图"推出自己的"哈希或加密方案.99%的情况下,如果您使用的是行业标准,那么您的系统安全性会大大降低.