PHP - 这种哈希的安全性/强度如何?

时间:2016-05-30 14:32:37

标签: php hash

所以我正在尝试"创建"一个强大的哈希算法,现在我想知道,它有多强大?

这就是我想出的:

function bHash($text, $salt)
{
  foreach (array_reverse(hash_algos()) as $hash) {
    $hash .= hash($hash, $text . $hash . $salt);
   }

  return "_bH/" . $salt . "/" . str_replace("/", "+", crypt($hash, $salt));
}

echo bHash($password, "KB8NtFIN"); // I am using a different salt for each password!

所以我在hash()函数中进行每次散列,然后用盐(8随机字符串+ hashname)反复散列它

结果,例如"你好"是:_bH/KB8NtFIN/KBumi3+cVUUtU

那么,这有多安全/强大?

1 个答案:

答案 0 :(得分:4)

  

PHP - 这种散列有多安全/强大?

简答:不是很好。

更短的答案:与PGP或varios bCrypt实施等行业标准相比,它不是很强大。

更长的答案:我不想扯掉in this Security StackExchange Post提供的答案,但请阅读该链接,阅读这些非常详细的答案,了解您自己的哈希算法的众多和各种陷阱。

  • 模糊处理 哈希,只是因为你无法阅读它并不意味着没有其他人可以。

  • 正如Zaph所说,Schneiers Law是一个相关的问题。

  • 如果你每次换盐,有什么意义的盐?盐需要通过算法识别,举一个非常简单的例子:你有代数表明a = b + c。可用于查找a值的最小公式数是未知变量的数量。所以在这种情况下2(一个用于b,一个用于c),所以如果你有hash = salt + password,如果你只有一个方程(哈希)你就找不到两者哈希值中的salt和密码值...

  • 如果您的盐包含/字符怎么办?如果您的密码包含/字符怎么办?

P.S>此外,JimL发布的IRCMaxwells内容链接也值得一读。