散列密码的最佳方法是什么?在 PHP 7 中,password_hash 是否足够安全或者是否有更安全的方法?

2023-11-28

散列密码的最佳方法是什么?我知道一种方法可以很好地完成工作,但我想知道是否有更好的方法在 PHP 7+ 中对密码进行哈希处理password_hash()。 password_hash 足够好吗?

<?php
password_hash('PASSWORD HERE', PASSWORD_DEFAULT);
?>

“我想知道在 PHP 7+ 中是否有比 password_hash 更好的方法来哈希密码。password_hash 足够好吗?”

是的,它足够安全,是的,还有更好/更安全的方法。从 PHP 7.2 开始,Argon2 是新实现的(哈希)方法的一部分,该方法赢得了密码哈希竞赛如果您想将 PHP 版本升级到 7.2,它提供了更可靠的方法。

The wiki关于这一点:

Argon2 是密码哈希竞赛推荐的密码哈希算法,是一种用于安全哈希密码的现代算法。 Argon2 解决了现有算法的几个关键缺点,因为它专为实现最高内存填充率而设计,并有效使用多个计算单元,同时仍然提供对权衡攻击的防御。与仅采用单个成本因子的 Bcrypt 不同,Argon2 由三个不同的因子参数化:

  1. 定义算法的内存使用情况的内存成本
  2. 定义算法执行时间和迭代次数的时间成本
  3. 以及并行系数,定义并行线程的数量

您还可以查看以下链接,其中包含有关 Libsodium 的更多信息https://paragonie.com/blog/2016/02/how-safely-store-password-in-2016

手册上http://php.net/manual/en/function.password-hash.php还包含有关信息PASSWORD_ARGON2I.

变更日志指出:

7.2.0 添加了对使用 PASSWORD_ARGON2I 的 Argon2 密码的支持。


如果升级到 PHP 7.2 不是一个选择,那么您可以增加“成本”。

拉自这个答案并来自相关帖子在 PHP 5.5 中生成密码哈希并设置成本选项,我引用:

将cost参数增加1,计算哈希值所需的时间加倍。成本参数是迭代次数的对数(以 2 为底),这意味着:

$迭代= 2 ^ $成本;

您还可以在 Stack Overflow 上查阅其他问答:

  • password_hash 到底是如何工作的?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

散列密码的最佳方法是什么?在 PHP 7 中,password_hash 是否足够安全或者是否有更安全的方法? 的相关文章

  • 获取结果到文本字段

    我有两个可以应用更改的表 但我需要回应基于特定标准所做的更改 现在 对于第一个表 所做的任何更改都会被回显 但是我不确定如果对第二个表 其他 进行更改 如何回显这些更改 if isset POST submit if isset POST
  • PHP 类似数组的对象

    我需要能够像这样设置我的对象 obj gt foo bar 然后我需要将它用作数组 如下所示 if obj foo bar more code here 只需添加implements ArrayAccess到您的类并添加所需的方法 公共函数
  • MySQL 启动错误 - 根元素丢失

    我在 Windows Server 2003 R2 上安装 MySQL 大约两个月了 启动时 我们会看到一个错误 显示 高严重性错误 根元素丢失 然后是另一个高严重性错误 显示 在调用 WriteToLog 方法之前必须定义日志文件路径 任
  • 将结果从 pdo 发送到 ajax 时遇到问题

    我想做的是 如果用户成功注册 pdo 将提供信息并将其发送到 ajax 如果用户注册与否 ajax 将发送消息 在我将这个条件放入我的 pdo 中后 它工作正常 现在它不会再插入 并且 ajax 告诉 注册用户时出错 每时每刻 script
  • 如何使用 PHP 向用户发送每日电子邮件通知?

    我有一个简单的用户注册表单 其中有一个复选框 如果用户的任何项目有活动 用户可以每天收到电子邮件通知 就像 Stack Overflow 有一个 通知 电子邮件受保护 cdn cgi l email protection每天都有新的答案 我
  • 如何按年和月对 WordPress 帖子进行分组?

    我正在尝试创建一个带有后查询并在输出中具有以下结构的函数 2021 January 1 Post Title 2 Post Title March 3 Post Title 2020 May 4 Post Title 这是我到目前为止所做的
  • 使用 Poedit 创建 POT 文件

    我正在拼命地尝试为我的 php 新应用程序创建一个目录 in 1 我创建了一个文件 trans php 其中放置了所有要翻译的值 例如 这是我的文件 2 我打开Poedit 在 路径 中这是我输入的内容 见图 然后我保存文件 php 的相同
  • 如何获取wordpress中文件的本地路径

    由于在wordpress中 上传的文件 图像以3种不同的大小存储 从而占用内存 我有一个代码可以根据给定图像的 URL 来调整图像的大小 调整大小的代码是 img wp get image editor image url if is wp
  • 为什么 Stripe Checkout 不将客户姓名添加到客户记录中?

    我正在尝试从 Stripe Checkout 表单提交中检索各种数据 我只是使用 Stripe 仪表板中提供的 Stripe Checkout 代码 In my checkout submission completed我有一个正在尝试检索
  • 导出具有高质量图像的画布的最佳实践是什么?

    我需要你的帮助 我解释一下我的情况 我正在使用 Fabric js 库在我的应用程序中放置形状 文本等 我的画布尺寸为 1000x1000 像素 约 26 45x26 45 厘米 我有一个图像上传脚本 仅用于上传高质量图像 例如 300 d
  • 高级自定义字段 - WordPress

    在使用时自定义字段插件 我无法让它返回任何数据 我创建了一个名为的字段组book cover thumbnail其中有一篇文章链接到它 谁能明白为什么下面的代码不起作用 img src 我完全没有收到任何错误 没有空格 确保您 a 使用以下
  • 比较两个关联数组的键顺序

    假设我们有 2 个关联数组
  • Laravel Eloquent 多对多查询 whereIn

    在我的应用程序中 我更新了关系one to many to many to many我正在尝试找出一种方法来保留相关功能 假设我有两个相关的表 例如狗和主人 如果我有很多主人 并且我想获取这些主人的狗 ID 列表 我应该如何雄辩地做到这一点
  • 在浏览器中就绪的 DOM 上缺少语言翻译弹出窗口:Laravel 5.2

    我的控制器中有以下代码 public function AllCountries Countries new App DataAccess CountryData gt GetAllCountries app gt setLocale fr
  • 如何在 PHP 的 foreach 循环中获取两个项目? [复制]

    这个问题在这里已经有答案了 我有一个推荐轮播 轮播每次循环浏览两个项目 现在我想每次得到两个项目foreach环形 我怎么才能得到它 Code div div class row div class col md 6 div class s
  • PHP 中的 __DIR__ 和 dirname(__FILE__) 有什么区别吗?

    对我来说看起来是一样的 但我不确定 因为有很多项目使用dirname FILE 他们的结果是完全一样的 所以 这没有什么区别 例如 以下两行 var dump dirname FILE var dump DIR 两者都会给出相同的输出 st
  • POST 之后在 PHP 中设置 Location 标头时避免 HTTP 302 响应代码

    我需要放一个201 CreatedPOST 请求的响应代码和 Location 标头 但由于某种原因我仍然收到 302 响应 这就是我所拥有的 header HTTP 1 1 201 header Location The new reso
  • 学说 - 获取下一个和上一个记录

    这样我就已经获取了一些记录 我已创建日期字段 现在我想按日期获取下一条和上一条记录 通过以下方式让它工作 qb this gt createQueryBuilder a next qb gt expr gt gt a created dat
  • 关于如何在 PHPUnit 中使用 setUp() 和tearDown() 有真实的例子吗?

    Methods setUp and tearDown 在每次测试之前和之后调用 但实际上 有没有任何真实的例子说明我为什么需要这个 检查其他人的测试 我总是看到类似的东西 public function setUp this gt test
  • SplFileObject + LimitIterator + 偏移量

    我有两行数据文件 两行仅用于我的示例 实际上 该文件可以包含数百万行 并且我使用 SplFileObject 和 LimitIterator 进行偏移 但这种组合在某些情况下会有奇怪的行为 offset 0 file new SplFile

随机推荐

  • Javascript ES6 共享类变量

    我有一堂课 看起来像这样 class Foo constructor arg1 arg2 this some obj new SomeObj param1 arg1 param2 arg2 module exports Foo 现在我想做同
  • Bootstrap Glyphicons datetimepicker 更改图标

    我正在使用 Bootstrap 日期时间选择器https eonasdan github io bootstrap datetimepicker 正如文档中提到的 我成功地使用下面的代码更改了向上 向下箭头 datetimepicker7
  • 如何配置 Pex 以尊重代码契约?

    鉴于以下示例代码 我如何配置 Pex 以遵守我的代码契约 public static IEnumerable
  • Elasticsearch 数组属性必须包含给定的数组项

    我的文件看起来像 tags gt tag1 tag2 name gt Example 1 tags gt tag1 tag3 tag4 name gt Example 2 我现在想要的是进行术语搜索 其中给定的数组可能如下所示 tag1 t
  • Google Play 应用程序页面的 Google Analytics(分析)

    我想分析人们使用哪些搜索关键字在 Play 商店中查找我的应用 那可能吗 我怎样才能这样做呢 自 2013 年 10 月起 您可以将 Google Analytics 和 Google Play 帐户关联起来 以查看应用程序页面的浏览量以及
  • RGB 值到 HSL 转换器

    Google 地图 API v3 允许将 样式 应用于地图 包括设置各种要素的颜色 然而 它使用的颜色格式是 HSL 或者看起来像这样 色调 RGB 十六进制字符串 亮度 100 到 100 之间的浮点值 饱和度 100 到 100 之间的
  • MEDIA_TYPE_IMAGE 无法识别

    我在使用 Android 开发人员的相机资源时遇到问题 这是我的代码 create Intent to take a picture and return control to the calling application Intent
  • 填写 jasper 报告时的进展

    我想在 Jasper 报告填写编译报告时向用户提供进度 基本上我希望在执行时取得进展 JasperFillManager fillReport JasperReport rpt 地图参数 JRDataSource src 有办法实现这个目标
  • 比较 XML 忽略元素顺序

    使用 XMLUnit 2 如何在不考虑元素顺序的情况下比较两个文档 I got XMLUnit 1 的这个问题 但显然 v2 中的新 API 不再有提到的方法了 这是我当前的代码 Diff diff DiffBuilder compare
  • aks 报告“pod 不足”

    我已经完成了 Azure Cats Dogs 教程中描述的内容here我在 AKS 中启动应用程序的最后一步中遇到错误 Kubernetes 报告我的 Pod 不足 但我不确定为什么会出现这种情况 几周前我已经完成了相同的教程 没有出现任何
  • Firefox、IE9+ 在 td 内出现 div 高度 100% 的问题(Chrome 上的工作示例)

    拿着它 http jsfiddle net zVscL 4 edit me height 100 does not behave the same as Chrome width 10px border 1px solid blue bac
  • 如何使用 git 正确处理 GreaseMonkey 用户脚本?

    我正在为 Firefox 编写用户脚本 所以我使用油猴 另外 为了方便开发 我使用git更新我的代码的不同版本 现在 让我尝试解释一下这个问题 当我将本地 git 目录中的用户脚本添加到 GreaseMonkey 时 就会在 Firefox
  • Rails .where 与 .find

    我注意到Model where即使只有一个结果 方法也始终返回一个数组Model find方法没有 这有什么原因吗 我想Model where是自 Rails 3 X 以来的首选函数 我应该使用Model find当我期望一个结果并且Mod
  • 为什么 JavaScript 中的 new Number(2) != new String("2")

    以下评价为true new Number 2 2 new String 2 2 显然 但请执行以下操作 2 2 new Number 2 2 new String 2 2 那么有人可以清楚地解释为什么他下面的评价false new Numb
  • 我可以将层归一化与 CNN 结合使用吗?

    我发现层归一化是比批量归一化更现代的归一化方法 并且在 Tensorflow 中编码非常简单 但我认为层归一化是为 RNN 设计的 批量归一化是为 CNN 设计的 我可以使用 CNN 的层归一化来处理图像分类任务吗 选择批量归一化或层的标准
  • 从列表中删除项目[重复]

    这个问题在这里已经有答案了 在循环列表时 我想根据条件删除列表中的项目 请参阅下面的代码 这给了我一个ConcurrentModification例外 for Object a list if a getXXX equalsIgnoreCa
  • 将 IConfigurationRoot 部分的更改保存到 .net Core 2.2 中的 *.json 文件

    我正在挖掘寻找解决方案 但没有找到它 我敢打赌有人遇到过这个问题 那么问题是什么 为了测试 我创建了简单的控制台应用程序 解决方案将在 asp net core web api 中使用 我有 TestSetting json 配置文件 设置
  • 为什么模板参数不推导只作为返回类型?

    如果我不在函数参数列表中使用模板参数 类型 gt 仅作为返回类型 则不会有任何推论 template
  • 多地图空间问题:Guava

    在我的 Java 代码中 我使用 Guava 的 Multimap com google common collect Multimap 通过使用这个 Multimap
  • 散列密码的最佳方法是什么?在 PHP 7 中,password_hash 是否足够安全或者是否有更安全的方法?

    散列密码的最佳方法是什么 我知道一种方法可以很好地完成工作 但我想知道是否有更好的方法在 PHP 7 中对密码进行哈希处理password hash password hash 足够好吗 我想知道在 PHP 7 中是否有比 password