fil*_*nut 5 php passwords hash salt bcrypt
我理解如何编写PHP代码以成功利用BCrypt.所以,我不需要帮助它开始工作.
相反,我需要帮助了解BCrypt如何神奇地工作!
在这个代码中,在第15行,为了验证登录密码是否= =原始(现在是哈希/盐渍)密码,我觉得你只是(a)使用登录创建一个新的哈希值/盐渍值密码和原始(以及现在的散列/盐渍)密码,然后(b)将(a)中创建的值与原始(现在的散列/盐渍)密码进行比较.我不明白这些是如何平等的,但它们是!
例如,假设用户使用密码test进行注册,这可以说(为简单起见)将哈希/盐腌为1234.
一天后,用户尝试登录(使用1234),我们需要对其进行身份验证.为此,我们执行第15行的代码.这意味着我们执行以下操作:
crypt("test", "1234") == "1234"
Run Code Online (Sandbox Code Playgroud)
如何使用新的盐值(在这种情况下为1234)进行散列/盐析测试会导致匹配?
在这一点上,这个问题大多只是我的脑筋急转弯.;)
Bcrypt哈希依赖于密码和盐,并且(就像任何哈希算法一样)它是完全确定的.
如果密码和salt相同,结果将是相同的.如果密码或盐更改,结果将更改.
使用时crypt($password, $hashedPassword),bcrypt没有使用哈希密码作为salt.它从散列密码中提取盐然后使用它.
结果crypt是$2y$number$salt-hashedpassword,所以如果你从哈希密码的开头拿到原始盐.
注意结果如何crypt($password, $salt)以值开头$salt.