PHP密码盐真的有必要吗?

Gje*_*t G 3 php database passwords hash salt

我已经问了十几次这个问题.

密码盐真的有必要吗?

我找不到关于这个主题的任何好文献.

从安全角度来看,密码盐有帮助吗?如果数据库被破坏,如果密码是反正的话,盐是不是会丢失?

此外,从刷力的角度来看,如果我禁止IP,是否真的有理由储存盐?

Jay*_*ard 6

是的,你应该总是使用盐.幸运的是,PHP非常聪明.从这篇文章:

如果您使用password_hash()函数的默认选项,PHP将为每个密码生成随机盐,因为它是经过哈希处理的.随机盐是一个额外的安全层,这使得破解任何密码变得异常困难.即使两个或更多用户使用相同的密码,他们的每个哈希都会有所不同.

这使您远离必须生成盐并将繁重的工作留给PHP.验证片password_verify()使用散列中的随机盐来测试给定的密码.

来自以下文档password_verify():

请注意,password_hash() 返回算法,成本和salt作为返回哈希的一部分.因此,验证哈希所需的所有信息都包含在其中.这允许验证功能验证散列,而无需为盐或算法信息单独存储.

  • Nutshell:`password_hash`生成的哈希包含3件事.用于生成散列的算法,使用的salt以及生成的散列.长答案简短:使用这两个功能.不要为了隐藏密码而使用自己的方法 - 你会做错的. (2认同)