存储 bcrypt 哈希值

2023-12-13

根据 PHP 的文档,bcrypt salt 是由

“$2a$”,两位数的成本参数,“$”,以及字母表中的 22 位数字“./0-9A-Za-z”

因此,如果我使用 crypt() 函数对我的密码进行哈希处理,则结果输出包括前 7 个字符($2a$10$,如果 10 是成本参数)作为盐的一部分 - 并且根据所有示例我在网上找到了,这个完整的输出被写入db.

我想知道将这些第一个字符与其余的盐和加密数据一起存储有什么意义。它们的含义对我来说完全清楚,但我无法真正理解为什么这些信息应该与散列的其余部分一起写入。它们不是“只是”有关算法和计算的自适应成本的信息吗?那么存储此类应用程序相关信息有什么好处呢?而且(即使听起来很幼稚)为什么要将它们透露给最终可以获取我的数据库的攻击者?


原因是 crypt 的工作原理。它的设计使您可以执行以下操作

if ($hashedPassword == crypt($rawPassword, $hashedPassword)) {
    //Verified
}

因此,通过存储所有内容,您不需要每次都重新创建盐字符串......

盐的目的不是保密。事实上,这并不意味着要保密。它的目的是衬托彩虹桌。请记住,如果他们可以获取您的数据库,那么他们也很有可能获得其他东西,因此将盐放在其他地方并不会真正给您带来太多好处。

此外,盐也起不了多大作用。 BCrypt 被设计为 CPU-Hard,这意味着暴力破解(即使知道盐)是不切实际的。这就是为什么你有一个cost范围。所以不用担心“隐藏”盐。只需将其与密码一起存储就可以了...

更不用说如果将来你想调整你的算法会发生什么?例如,假设您希望由于安装更好的硬件而增加成本参数。如果您没有将这些信息与密码一起存储,您存储的所有密码都将变得无效。这样,存储的每个密码都包含验证它所需的所有信息。这样,您可以检查是否有效登录,如果哈希值是当前默认值,如果不是,则重新哈希并使用新哈希值更新数据库。它可以防止与更新和改进哈希方法相关的问题......

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

存储 bcrypt 哈希值 的相关文章

  • 如何在没有引用的情况下复制对象?

    PHP5 OOP 有据可查对象通过引用传递 http php net manual en language oop5 references php默认情况下 如果这是默认的 在我看来 有一种非默认的方式可以在没有参考的情况下进行复制 如何
  • postgreSQL 在 WAMP 上的集成

    我刚刚在 Windows 7 上安装了 postgreSQL 我正在尝试将 postgreSQL 与 WAMP 服务器集成 为此 我在 httpd conf 和 php ini 文件中进行了以下更改 1个加载模块c path to libp
  • 如何在php中使用preg添加html属性

    我正在寻找在 php 中编写一个脚本来扫描 html 文档并根据它找到的内容向元素添加新标记 更具体地说 我是扫描文档并为每个元素搜索CSS标记 float right left 如果找到它 它会添加align right left 基于它
  • Zend Framework Zend_Form 装饰器: 位于按钮元素内部?

    我有一个像这样创建的按钮元素 submit new Zend Form Element Button submit submit gt setLabel My Button submit gt setDecorators array Vie
  • 如何使用 Google 帐户对我们网站中的用户进行身份验证

    如何在我们的网站中使用 Google 帐户对用户进行身份验证 我希望用户重定向到谷歌登录页面 然后将他重定向到我的网站 我想要这个 PHP 实现 你要OAuth http code google com apis accounts docs
  • python的hash()是持久的吗?

    Is the hash python 中的函数保证对于给定的输入始终相同 无论输入的时间 地点如何 到目前为止 仅从反复试验来看 答案似乎是肯定的 但最好了解其工作原理的内部原理 例如 在测试中 python gt gt gt from i
  • 来自本地 XML 的模拟 SoapClient 响应

    我想用文件中的 XML 来模拟 SoapClient 的响应 我如何创建一个 stdClass 对象 就像 SoapClient 从文件返回一样 客户端已经包装了 SoapClient 因此可以轻松模拟响应 我的模拟是这样的 soapCli
  • 在一个后台为MYSQL的网站上集成搜索

    我有一个位置搜索website http www jammulinks com对于一个城市 我们首先收集该城市所有可能类别的数据 如学校 学院 百货商店等 并将其信息存储在单独的表中 因为每个条目除了名称 地址和电话号码外都有不同的详细信息
  • JavaScript 中带前导零的数字发生变化

    我使用 print 语句从 php 调用 javascript 函数来打印 html 代码 并且传入一个整数 但是 在 php 中传递的值与 javascript 函数接收到的数字不匹配 我不知道为什么 这是调用 javascript 函数
  • PHP 基本身份验证 file_get_contents() [重复]

    这个问题在这里已经有答案了 我需要从网站解析一些 XML 数据 XML 数据是原始格式 但在我需要进行身份验证之前 基于基本网络服务器的身份验证 使用用户名和密码 I tried homepage file get contents htt
  • 删除 woocommerce 店面主页标题 php

    我正在使用 woocommerce 的店面主题 我需要用 php 删除主页标题 h1 我知道 css 解决方案 但我不想使用它 因为我想将 h1 添加到该页面的其他位置 并且在一个页面中包含 2 个 h1 对 seo 不利页 我也知道删除页
  • 如何在 Smarty 中打印 json

    我从 api 获取 json 如何使用 Smarty 打印 json Json格式 first name jinu last name mk loginid email protected cdn cgi l email protectio
  • 重新排列数组键 php [重复]

    这个问题在这里已经有答案了 我有这个数组 Array 15 gt 13 1 16 gt Mark one answer 19 gt You see a car on the hard shoulder of a motorway with
  • 选取散列第 N 个元素的最快方法

    我有一个大哈希表 带有字符串索引的数组 并正在寻找一个函数quickly从中选取第一个 理想情况下也是第 N 个 元素 array shift and reset 对于我的需求来说太慢了 UPDATE 我也不是在寻找基于引用的解决方案 该函
  • UTF-8、PHP、Win7 - 现在是否有解决方案可以使用 php 在 Win 7 上保存 UTF-8 文件名?

    更新 只是为了不让您阅读所有内容 PHP 开头 7 1 0alpha2 在 Windows 上支持 UTF 8 文件名 感谢阿纳托尔 贝尔斯基 根据 stackoverflow 上的一些链接 我找到了部分答案 https stackover
  • wordpress - 像 stackoverflow 中那样内嵌 ajax 注释

    我有一个 WordPress 博客 希望为人们提供与 stackoverflow 中添加评论相同的用户体验 有很多评论 ajax 插件 但我找不到一个可以使用的插件 它允许您在主页上内联 进入并添加评论 而无需先深入到单独的单个帖子页面 任
  • 使用 fopen() 包装器创建 ZIP 文件

    如何使用以下命令创建 ZIP 文件fopen 包装器 http es php net manual en wrappers compression php 这显然是not道路
  • 使用 PHP 和 OAuth 访问 SkyDrive

    我想使用 PHP 访问 skyDrive 我想检索文件和文件夹列表 下载 上传和删除文件 我有一个 microsoft dev clientID 和 clientSecret 有人可以帮助我开始使用 OAuth 连接到 skyDrive 并
  • PHP 中的多个插入查询[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个 php html 表单 它将结果插入到狗展数据库中 问题是 无论我做什么 我都会收到此错误 查询失败 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在 INSE
  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏

随机推荐

  • 在所有窗口之上运行 hta

    我有一个 HTML 应用程序 我想保留在所有窗口的顶部 也就是说 如果打开 切换到另一个窗口 我希望这个窗口覆盖它 JavaScript 解决方案在 Windows 7 IE9 模式下不起作用 不确定是什么阻碍了它 也无法更改 而 VBSc
  • 没有表的映射关联的 Hibernate 标准投影

    我有 2 张桌子说 表1和表2 现在 Table1 有 3 列 即 t1 t2 t3 Table2 有 2 列 t4 和t5 我必须通过联接从两个表中获取数据 但注释或 xml 中的两个表之间没有映射关联 现在的主要问题是我必须使用休眠投影
  • 在 Visual Studio 2017 .NET Core 项目中支持 Roslyn 分析器(.ruleset)

    如何在 Visual Studio 2017 NET Core 项目中添加对 Roslyn 分析器 ruleset 的支持 在 project json 中 它是通过使用配置的buildOptions buildOptions additi
  • Varchar 或 Text 数据类型,字符串长度最多为数千个字符

    我有一个小型社交网站 包含帖子和评论 我决定让用户使用他们想要的任意数量的字符创建帖子 我认为存储此类内容的最佳数据类型是Text 但对于评论 大多数情况下用户只写一行或几行文字 这就是为什么我认为我必须将注释字符串长度限制为最大 3000
  • 从 C# 关闭最小化/图标化进程

    这是我的问题 我需要从 C 程序关闭一个已经运行的进程 问题是该进程现在作为图标运行 最小化到任务栏 除非用户至少打开它一次 这在无人值守的计算机上永远不会发生 否则它永远不会 有一个主窗口 我的另一个要求是应用程序是closed not
  • 尽可能均匀地分配数量

    我们有一定的数量 例如300 单位 该数量应尽可能均匀地分布在 40 个 槽 上 如果每个槽都相同 那就很容易了 所以每个槽都是 7 5 然而 插槽的大小各不相同 我们不能 填充 超过其 大小 允许的范围 例如如果只有 5 个 我们无法 填
  • 有没有直接的方法将 Informix 上的 Unix 时间转换为 YYYY-MM-DD HH:MM:SS?

    我知道使用 PHP 或 Perl 可以轻松完成类似的事情 但我想知道是否有一种方法可以直接在 Informix 上完成 例如函数FROM UNIXTIME 在 MySQL 上 我认为你可以使用 dbinfo 和 utc to datetim
  • 使用php将mysql表列表从mysql导出到csv文件

    我想知道是否有人可以向我展示一个示例 PHP 代码 说明如何将 MySQL 数据库中的大约 50 个表导出到 CSV 文件 我的数据库名称是 samples 该数据库下有大约 49 个表 我希望该数据库下的每个表 大约有 20 00 行 导
  • 使用 Google Sheets 脚本,为什么我的 if 语句在比较单元格值时总是返回 false?

    我需要比较两个单元格值并在它们不同时对其采取行动 然而 在比较单元格内容时 我的 if 语句总是返回 false 我不明白为什么 function onEdit var ss SpreadsheetApp getActiveSpreadsh
  • Haskell 继承、数据、构造函数

    所以我想为我的小行星游戏 作业定义多个数据类 data One One oneVelocity Velocity onePosition Position other properties unique to One data Two Tw
  • 如何在C#中从mysql结果中读取某些数据

    我想从 C 对 mysql 进行某些查询 这样我就可以返回例如姓名和姓氏 我不知道如何在 C 中处理这个问题 我想尽量减少 SQLinjection 这是我的代码 con new MySqlConnection server localho
  • 无法加载实体框架提供程序类型“Oracle.ManagedDataAccess.EntityFramework”

    我正在尝试在 MVC 应用程序中使用 Entity Framework v6 使用 Oracle Data Provider NET ODP NET 连接到 Oracle 我从这里安装了 ODP NET https www nuget or
  • 根据 WooCommerce 中的产品类别自定义“缺货”文本

    每件缺货产品都显示 缺货 有很多functions php覆盖文本的脚本 但我只是尝试覆盖特定于 类别 A 的文本 或者如果我知道类别 id 编号 那也可以工作 我找到了这个脚本 但它只允许您修改每个产品 ID 的 txt add filt
  • 视图内的 Rails 布局名称

    如何打印视图中当前布局的名称 Example puts controller current layout Thx 这适用于 Rails 3 0 7 controller send layout 显然 这是一种私有方法 因此使用时需要您自担
  • VHDL:IEEE std_logic 库中的真值表

    我研究了 IEEE 如何定义其库 当我打开的时候标准逻辑库 我看到了一些被定义为常数的真值表 我不知道真值表是如何运作的 请解释如何使用真值表返回结果 这是我找到的 AND 门 TYPE stdlogic table IS ARRAY st
  • SQL 创建 UDF 计算列

    我尝试创建一个计算列 但由于其中一列位于另一个表中 我知道我需要创建一个 udf 这是 ERD 的链接 以便您可以查看其中的关系 http imageshack us photo my images 23 databaseassignmen
  • 如何使用Androidfragmentmanager传递变量[重复]

    这个问题在这里已经有答案了 我有以下简单的代码可以在内容框架中从一个片段切换到另一个片段 在下面的代码中是否有一种简单的方法来传递变量 FragmentManager fm getActivity getFragmentManager fm
  • 试图理解这个简短的汇编指令,但我不明白

    我们有一个任务 给定的是 2 寻址的汇编指令 机器 mov 202 100 r1 记下替代此的最小汇编指令序列 说明 见上文 where n rx 按后增量索引的寄存器 n 是索引值 rx 是寄存器 x 单个数值 直接寻址 存储 我们应该使
  • 如何在 TypeScript 中设置类型参数的下限?

    在 TypeScript 我的版本 2 1 1 中 可以为类型参数设置上限 如下所示 class Animal class Cat extends Animal class Kitten extends Cat function foo a
  • 存储 bcrypt 哈希值

    根据 PHP 的文档 bcrypt salt 是由 2a 两位数的成本参数 以及字母表中的 22 位数字 0 9A Za z 因此 如果我使用 crypt 函数对我的密码进行哈希处理 则结果输出包括前 7 个字符 2a 10 如果 10 是