gpt4 book ai didi

php - 密码存储,使用 sha-512 的 hash() 或使用 blowfish (bcrypt) 的 crypt()?

转载 作者:行者123 更新时间:2023-12-02 07:39:38 24 4
gpt4 key购买 nike

这是我当前在 PHP/SQL 项目中的密码散列过程...

  • 从/dev/urandom 中取出 512 位的每个用户 salt,除了最终的哈希值之外,还存储在用户的数据库记录中
  • 从存储在文件系统中的/dev/urandom 中取出 512 位的“pepper”。这是一个每个应用程序不变,每个用户都相同
  • 然后 hash('sha512', $password.$salt.$pepper, TRUE)

哈希和盐以二进制形式存储在数据库中,主要是出于习惯。我认为这在安全方面没有任何区别。如果有的话,它对 SQL 备份来说稍微不太方便,并且使 PHP 代码看起来稍微复杂一些。

最近是否普遍认为使用 SHA-256 或 SHA-512 的 hash() 已被 bcrypt 取代?
我相信 SHA-2 (256/512) 仍然被认为是加密安全的,我可能过度使用了熵位。与攻击者从数据库转储中对 SHA-2 哈希进行逆向工程相比,我的代码中的缺陷更有可能导致问题。

但是我是否应该更新我的方法,以便将 crypt() 与 CRYPT_BLOWFISH 一起使用(我相信这被称为 bcrypt,河豚在技术上是一种密码而不是哈希算法)?
甚至作为 future 的最佳实践?

我并不是特别关心算法的计算开销(在合理范围内)。这只会在创建帐户、更改密码或登录时散列然后比较时成为一个因素。这些事件只占页面浏览量的一小部分。我想在某种程度上越慢越好,如果它使服务器更难生成,那么它将使攻击者的工作更慢以进行暴力破解。

干杯,B

最佳答案

如果你能等到 php 5.5,将会有一些有用的内置函数:

https://gist.github.com/3707231

到那时,使用 crypt - 你可以看看这个新功能的前向兼容端口:

https://github.com/ircmaxell/password_compat

关于php - 密码存储,使用 sha-512 的 hash() 或使用 blowfish (bcrypt) 的 crypt()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12468063/

24 4 0
文章推荐: c - 与位置无关的代码 (PIC) 有什么关系?
文章推荐: oracle - 尝试通过 PL/SQL 导出 Oracle 给出的日期为 0000-00-00
文章推荐: css - 强制
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com