我知道如何编写PHP代码来成功使用BCrypt。所以,我不需要帮助让它工作。
相反,我需要帮助理解BCrypt是如何神奇地工作的!
在这个代码中,在第15行,为了验证登录密码是否等于原始密码(现在已经被哈希/加盐),我认为您只是(a)使用登录密码和原始密码(现在已经被哈希/加盐)创建了一个新的哈希/加盐值,然后(b)将(a)中创建的值与原始密码(现在已经被哈希/加盐)进行比较。 我不明白这些如何可能相等,但它们确实相等! 例如,假设用户使用密码test注册,这意味着(为简单起见)已经被哈希/加盐成1234。
一天后,用户尝试登录(使用1234),我们需要验证他们。要这样做,我们执行第15行的代码。这意味着我们执行以下操作:
在这个代码中,在第15行,为了验证登录密码是否等于原始密码(现在已经被哈希/加盐),我认为您只是(a)使用登录密码和原始密码(现在已经被哈希/加盐)创建了一个新的哈希/加盐值,然后(b)将(a)中创建的值与原始密码(现在已经被哈希/加盐)进行比较。 我不明白这些如何可能相等,但它们确实相等! 例如,假设用户使用密码test注册,这意味着(为简单起见)已经被哈希/加盐成1234。
一天后,用户尝试登录(使用1234),我们需要验证他们。要这样做,我们执行第15行的代码。这意味着我们执行以下操作:
crypt("test", "1234") == "1234"
哈希/加盐技术是如何使用新的盐值(在本例中为1234)来匹配测试文本的呢?
目前为止,这个问题对我来说主要是一个脑力游戏。 ;)