我一直在寻找,但仍不确定“salt”是什么以及如何使用/实现它。抱歉问这个问题可能有点幼稚,因为我是自学php的。
http://www.jotlab.com/2010/04/18/cakephp-rainbow-table-protection-behaviour/
http://www.zimuel.it/blog/2009/07/build-a-secure-login-with-zend-framework/
password_hash()
函数会自动添加盐... https://www.geeksforgeeks.org/how-to-secure-hash-and-salt-for-php-passwords/ - Elijah Mock当我第一次提出这个问题时,许多年前,有人回答说,“盐对食物有什么作用?”答案是它为食物增添了变化。 密码学“盐”的背后理念是,在字符串的开头或结尾添加某些内容,以便两个相同的密码不会哈希到相同的加密值。
考虑这个例子- 如果我的密码非常常见,比如"hello123",然后它与所有其他"hello123"密码具有完全相同的加密哈希值,那么我难道不能在散列密码列表中查看谁还有相同的加密哈希值,并使用我的密码登录他们的账户吗?
盐是添加到您想要加密或哈希的字符串中的(短)字符串。例如:
<?php
$password = 'abcdefg';
$salt = 'anythingyouwant_';
$pw_hash = md5($salt.$password);
?>
这样做可以增加哈希的安全性,因为“anythingyouwant_abcdefg”在哈希数据库中很可能没有存储(http://en.wikipedia.org/wiki/Rainbow_tables)。
好的,这是评论中提供的信息,感谢ceejayoz
http://en.wikipedia.org/wiki/Salt_(cryptography)
盐是一种你在哈希之前添加到字符串中的东西,它为密码等内容添加了另一层安全性。
由于某些原因,新接触加密学的人通常很难理解盐(Salts)的概念。但一旦理解了,这个概念实际上非常简单易懂。可以看看这篇文章,我认为它比大多数文章更好地解释了这个概念。
https://web.archive.org/web/20140430053616/http://cryptodox.com/Salt_(cryptography)
让我们将几个哈希算法结合起来,制作一个双重哈希算法,使事情有些变化:
$password = "myPassword";
$salt = sha1(md5($password)).'k32duem01vZsQ2lB8g0s';
$password = md5($password.$salt);
正如您所看到的,我们首先使用双重哈希算法(md5和sha1)对密码进行哈希,并与创建的盐值键连接。之后,我们将真实密码与生成的盐值组合在一起,并再次使用md5进行哈希。优点是这种方式的盐值是随机的并且会变化,使其几乎不可能被破解。我的意思是,如果您可以等待一百万年并拥有一台超级计算机,那么可以尝试去破解它。