Php 密码散列:自动生成的salt比手动生成的salt有什么优势?
若我理解正确,任何PHP升级,或移动到不同的服务器将使以前散列的密码(存储在数据库中)无用?因为在一个新的系统中,盐是不同的Php 密码散列:自动生成的salt比手动生成的salt有什么优势?,php,password-encryption,Php,Password Encryption,若我理解正确,任何PHP升级,或移动到不同的服务器将使以前散列的密码(存储在数据库中)无用?因为在一个新的系统中,盐是不同的 这让我对自动生成的salt的用例感到好奇 为每个密码生成salt,并作为从password\u散列函数返回的字符串的一部分存储。因此,每次对密码进行哈希运算时,结果都会有所不同。我们在密码中使用salt的原因是每次创建一个新的散列时都会得到一个新的散列,因此如果两个用户使用密码“hunter2”,它们将作为完全不同的值存储在数据库中,从而使rainbow表变得无用 因此,
这让我对自动生成的salt的用例感到好奇 为每个密码生成salt,并作为从password\u散列函数返回的字符串的一部分存储。因此,每次对密码进行哈希运算时,结果都会有所不同。我们在密码中使用salt的原因是每次创建一个新的散列时都会得到一个新的散列,因此如果两个用户使用密码“hunter2”,它们将作为完全不同的值存储在数据库中,从而使rainbow表变得无用
因此,移动到新服务器不会使以前散列的密码变得无用。salt是为每个密码生成的,并作为从password\u散列函数返回的字符串的一部分存储。因此,每次对密码进行哈希运算时,结果都会有所不同。我们在密码中使用salt的原因是每次创建一个新的散列时都会得到一个新的散列,因此如果两个用户使用密码“hunter2”,它们将作为完全不同的值存储在数据库中,从而使rainbow表变得无用 因此,移动到新服务器不会使以前的哈希密码无效。现在(从PHP7.1开始。*)只使用
bcrypt
对密码进行哈希。Salt和哈希一起保存,所以升级或移动到另一台服务器不会使哈希变得无用
正如杰伊·布兰查德(Jay Blanchard)所说,自动食盐是一种优势,因为你不必在意。所有这些都是方便和自动处理
您甚至不应该自己创建盐,因为它在自己生成盐时也非常重要(非随机盐、不正确的随机盐源等)
此外,salt
选项从PHP7.0.0开始在password\u hash
bcrypt
算法中被弃用,因此PHP将始终使用自动生成的salt。现在(从PHP7.1.*开始)只使用bcrypt
对密码进行哈希运算。Salt和哈希一起保存,所以升级或移动到另一台服务器不会使哈希变得无用
正如杰伊·布兰查德(Jay Blanchard)所说,自动食盐是一种优势,因为你不必在意。所有这些都是方便和自动处理
您甚至不应该自己创建盐,因为它在自己生成盐时也非常重要(非随机盐、不正确的随机盐源等)
此外,
salt
选项从PHP7.0.0开始在password\u hash
bcrypt
算法中被弃用,因此PHP将始终使用自动生成的salt。如果要使用手动salt,可以使用它。即使您移动到新服务器,以前的密码也不会无用
诀窍是你们可以将你们的手动salt字符串存储在你们通常存储站点常量的地方,例如,Db username,Db password
因此,即使您移动到新服务器,您仍然使用手动salt字符串和以前的salt数据 如果你想使用人工食盐,你可以使用它。即使您移动到新服务器,以前的密码也不会无用 诀窍是你们可以将你们的手动salt字符串存储在你们通常存储站点常量的地方,例如,Db username,Db password
因此,即使您移动到新服务器,您仍然使用手动salt字符串和以前的salt数据 相关问题:当然有一个优势——它们是随机的,你不必担心盐。我从来没有听说过升级或移动会破坏
password\u verify()
解析散列的能力。一旦创建了散列,它总是可以被AIK解析。强烈建议您不要为此函数生成自己的salt。如果您未指定安全盐,它将自动为您创建安全盐。()。生成的(或手动)salt作为从密码\u散列
返回的散列的一部分存储。从那时起,你不应该使用任何东西,除了password\u verify
(和password\u needs\u rehash
)之外,它们所需要的只是原始的复合哈希。相关问题:当然有一个优势——它们是非常随机的,你不必担心盐。我从来没有听说过升级或移动会破坏password\u verify()
解析散列的能力。一旦创建了散列,它总是可以被AIK解析。强烈建议您不要为此函数生成自己的salt。如果您未指定安全盐,它将自动为您创建安全盐。()。生成的(或手动)salt作为从密码\u散列
返回的散列的一部分存储。从那时起,您不应该使用除密码_验证
(和密码_需要重新设置
)之外的任何东西,它们所需要的只是原始的复合散列。;)一种适用于所有用户的站点范围内的静态盐,也称为“胡椒”,不能替代每用户盐。它可以作为一种额外的安全措施,但绝不是替代品。面向所有用户的站点范围的静态盐,也被称为“胡椒”,不能替代每用户盐。它可以用作额外的安全措施,但不能替代。