首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Password_hash和password_verify

使用Password_hash和password_verify
EN

Stack Overflow用户
提问于 2016-10-29 08:12:40
回答 1查看 579关注 0票数 1

我对password_hashpassword_verify很陌生,它们似乎是安全存储密码的最有效的方式!

我注意到password_hash为相同的plain-textevery time生成不同的哈希!

这意味着,如果用户试图使用密码(thisIsMyPassword)创建一个帐户,它将生成类似于此$2y$10$VCNH8ndve8hwbvLJ2nMHtOsEiigE4zA7ViADxCJfq9bmUCmkNkcce的哈希,

如果另一个或同一个用户尝试使用相同的密码创建另一个帐户,即(thisIsMyPassword),则将创建帐户,密码的哈希值将类似于$2y$10$Hqssc5nn3pzgfwqVwQrQz.Ny71q972RXmCmyV9ykywG8iELbsf47a

现在您看到了相同的值,即(thisIsMyPassword)导致了不同的散列!

这样可以吗?

只要密码哈希在数据库中不同,允许用户使用相同的密码可以吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-29 10:37:41

密码哈希包括一个所谓的salt (一个小的随机值),它是为了防止字典攻击,下面是PHP手册中说的:

如果省略,password_hash()将为每个密码哈希生成一个随机盐。这是预期的运作模式。

作为输出,您得到的值实际上不是一个普通的散列,而是一个由-算法id、salt和hash (密码、salt)组成的字符串。

使用的算法、成本和盐分作为散列的一部分返回。因此,将包含验证哈希所需的所有信息。在里面。这允许password_verify()函数在不需要单独存储salt或算法信息的情况下验证哈希。

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

https://stackoverflow.com/questions/40317276

复制
相关文章

相似问题

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