首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解BCrypt

理解BCrypt
EN

Stack Overflow用户
提问于 2014-01-04 17:45:20
回答 1查看 1.4K关注 0票数 5

我理解如何编写PHP代码来成功地利用BCrypt。所以,,我不需要帮助让它开始工作,

相反,我需要帮助理解在地狱的BCrypt如何神奇地工作!

这段代码中,在第15行中,为了验证登录密码是否为原始密码(现在是散列/咸)密码,在我看来,您只是(a)使用登录密码和原始密码(现在是散列/咸)密码创建了一个新的散列/盐渍值,然后(b)将(a)中创建的值与原始密码(以及现在已散/咸)密码进行了比较。我不明白这些怎么可能是平等的,但它们是平等的!

例如,假设一个用户使用test的密码注册,这个密码(为了简单起见)会被哈希/咸化到1234

一天后,用户尝试登录(使用1234),我们需要对它们进行身份验证。为此,我们在第15行执行代码。这意味着我们执行以下操作:

代码语言:javascript
复制
crypt("test", "1234") == "1234"

使用新的盐分值(在本例中为1234)的散列/盐析测试是如何匹配的?

在这一点上,这个问题对我来说基本上只是脑筋上的挑逗。;)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-04 17:54:49

Bcrypt散列取决于密码和salt,(与任何哈希算法一样)它是完全确定性的。

如果密码和salt相同,结果将是相同的。如果密码或salt更改,则结果将更改。

使用crypt($password, $hashedPassword)时,bcrypt不使用散列密码作为salt。它从散列密码中提取盐,然后使用该密码。

crypt的结果是$2y$number$salt-hashedpassword,所以如果您使用哈希密码的开头,就会得到原始的salt。

注意crypt($password, $salt)的结果是如何以$salt的值开始的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20924426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档