安全地散列密码 - 这么多相互矛盾的建议!

2023-11-27

我读到了很多关于如何安全存储密码的相互矛盾的建议。我唯一确定的是不要使用MD5!我见过有人提倡使用 PHPbcrypt函数,这似乎会占用服务器的处理器。我见过提倡盐的人,也见过提倡不使用盐的人。

一切都是那么的不明朗。关于如何安全存储密码是否有真实可信的建议?

编辑:经过大量研究后,我发现 ;login: 中的一篇文章相当深入地讨论了该主题:http://www.usenix.org/publications/login/2004-06/pdfs/alexander.pdf


嗯,这有几个部分。

  1. 您需要首先尝试使获取您的数据库和密码变得困难,并确保它们的安全。这包括不将密码设置为明文以及不使用对称加密算法。
  2. 你需要使用一个salt。这样做可以防止人们使用预先计算的查找表(即彩虹表)或类似的东西http://md5.rednoize.com/。为你的盐选择一些数据unique and 不可预料的。我通常使用随机 32 位值,但也不会少太多。
  3. Some algorithms are stronger than others. This is defined in a couple ways
    1. 计算速度有多快。越长越好。攻击者计算哈希值的速度越快,暴力攻击的可能性就越大。
    2. 如果算法没有已知的弱点,则会减少搜索空间。例如,md5 散列中的位数具有误导性,因为有已知的攻击减少实际搜索空间

从今天开始我认为SHA1 或 SHA2在不久的将来,加盐是相当安全的。有一个实用程序叫做bcrypt它使用河豚的不对称变体,并内置盐和计算费用的概念,可能值得一试。


编辑:我想澄清一下盐是什么,因为有一个lotSO和网上对此的误解。

什么是盐not

一个秘密,预先商定的字符串,您使用密码进行哈希处理。这是密钥,而不是盐。

什么是盐

您在散列时将盐(每个散列是唯一且不可预测的)与密码一起包括在内,但您还包括未加密的它的副本outside的哈希值,这样当稍后验证哈希值时,您可以在哈希值之前给出测试密码时包含相同的盐,以便您可以正确地比较哈希值。

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

安全地散列密码 - 这么多相互矛盾的建议! 的相关文章

  • 简单的 PHP 条件帮助: if($Var1 = in list($List) and $Cond2) - 这可能吗?

    这是一个可能的功能吗 我需要检查一个变量是否存在于我需要检查的变量列表中 并且 cond2 是否为 true 例如 if row name 1 2 3 Cond2 doThis 它对我不起作用 我在复制粘贴中更改的只是我的列表和变量名称 i
  • 优雅地处理没有数据的 amcharts

    我想知道我的 dataProvider 是否为空 amCharts绘制时默认为null 我怎样才能动态地处理它 var chart AmCharts makeChart chartdiv theme none type serial dat
  • FPDI/FPDF:水印和打印多页

    我修改了这个堆栈问题 当用户尝试下载文件时在 pdf 文件上应用水印 https stackoverflow com questions 3983432 applying watermarks on pdf files when users
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • PHP严格标准:声明应该兼容

    我有以下类层次结构 class O Base class O extends O Base abstract class A Abstract public function save O Base obj class A extends
  • 蛋糕控制台 2.2.1:烘焙错误

    运行 MAMP 的 OSX 机器 CakePHP 2 2 1 已正确安装和配置 这意味着当我浏览到 Index php 文件时 所有绿色条都显示出来 我已经完成了博客教程 并且正在开发我的第二个应用程序 其中脚手架已启动并运行 现在我第一次
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • 交换关联数组中的两个项目

    Example arr array apple gt sweet grapefruit gt bitter pear gt tasty banana gt yellow 我想调换一下柚子和梨的位置 这样数组就变成了 arr array ap
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • 在 PHP 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • CURL 中的 data-urlencode 是什么意思?

    我搜索了很多个小时试图弄清楚 php curl 中的 data urlencode 是什么 我尝试过这个 但我认为这是不对的 xmlpost object1 file https www lob com goblue pdf 在文档中是 d
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 如何在 Laravel 中使用 PUT http 动词提交表单

    我知道这个问题可能已经提出 但我就是无法让它发挥作用 如果有人可以帮助我 我将非常感激 我安装了 colletive form 但答案也可以是 html 表单标签 现在列出我的表格 我的路线和我的例外情况 Form model array
  • 如何使用 PHPExcel 库从 Excel 获取日期

    我正在尝试使用 PHPExcel 从 Excel 获取日期 但我没有得到日期 我得到的字符串值不是 1970 以来的秒数 我尝试过的代码是 InvDate trim excel gt getActiveSheet gt getCell B
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val

随机推荐

  • 如何更改视图和部分视图的默认位置

    我是 MVC 新手 非常想知道如何更改视图和部分视图位置 我们知道视图和部分视图存储在视图文件夹中 如果我的控制器名称是 home 则视图必须存储在视图文件夹内的主文件夹中 并且所有部分视图存储在共享文件夹中 我想知道如何更改视图和部分视图
  • Chrome 要求使用 Thin 在我的 Rails 应用程序上为 SSL“选择证书”

    我有一个配置为仅使用 SSL 的 Rails 应用程序 我还拥有 StartSSL 提供的免费 SSL 证书 我通过以下命令使用 Thin 作为我的 Web 服务器 thin start p 80 thin start p 443 ssl
  • Snapchat 一次性下载所有记忆

    多年来 我在 Snapchat 上保存了很多照片 现在我想检索它们 问题是它们不容易导出 但幸运的是 如果您上网 您可以请求所有数据 这太棒了 我可以看到我的所有照片下载链接 并使用本地 HTML 文件 如果我单击 下载 它就会开始下载 这
  • 在 AFNetworking 中使用 URL 参数和 JSON 正文进行 POST

    我想进行一个同时包含 URL 参数和 JSON 正文的 POST 调用 URL http example com register apikey mykey JSON field value 如何通过 AFNNetworking 同时使用两
  • 用Python计算农历/阴阳假期

    这里有日历坚果吗 我一直在寻找有关如何计算公历中不规则发生的当年假期的信息 通常会发生这种情况 因为该假期是基于较旧的农历 我在谷歌上进行了令人作呕的搜索并取得了一些进展 但无法完成 如果有人有现代语言的示例代码来描述他们的计算 我将非常感
  • 在 for 循环中, (int i : high) 做什么,其中 high 是 int 数组 [重复]

    这个问题在这里已经有答案了 正如标题所说 有些人告诉我 如果我想打印数字数组中所有内容的总和 我应该使用上述参数进行 for 循环 如果需要进一步解释 代码将遵循 但其作用的确切定义是什么 我的意思是 部分 是吗 对于数组中的每个数字 i
  • )?图ql' aria-label='不知道如何转换Django字段技能()?图ql'> 不知道如何转换Django字段技能()?图ql

    我正在努力改变我的rest端点指向graphql我有一个图书馆叫TaggableManager作为其中之一model fields 有人知道这如何与 graphql 一起使用吗 提前致谢 你必须明确告诉石墨烯如何转换TaggableMang
  • 在 adb shell 中找不到 grep 命令

    我的手机通过adb连接到电脑后 进入adb shell 然后输入grep给我 grep not found 这是我的adb安装问题还是我的手机问题 如何让 grep 适用于我的设备 PS 这就是为什么我认为这可能是我的手机有问题的原因 而不
  • 错误:使用react-redux时,提供商的钩子调用无效

    我正在制作一个应用程序来从 url 获取参数并根据 url 的值工作 为了做到这一点 我尝试实现 redux 我想我编写了大部分代码 并且我是 React 和 Redux 的初学者 当我在 index js 文件中插入 Provider 时
  • 使用 Gmail 发送邮件的脚本:无法在 SMTP 服务器上进行身份验证

    我很难让 PHP 脚本使用 SMTP Gmail 帐户发送电子邮件 我正在使用 PHP 和 Symfony2 SwiftMailer 但问题似乎出在我的 Gmail 帐户配置上 在我的日志中 我最终收到以下错误消息 ERROR Except
  • 如何在 android ExoPlayer 中显示字幕

    我正在使用 Exoplayer 来播放 URL 我想在 exoplayer 中添加 srt 文件 但我认为播放器不支持srt文件 所以我将文件内容放入 1 个变量中 如何在 android exoplayer 中显示字幕 有点晚了 但它可能
  • GKE 集群升级到 1.14.6 后,VPN 无法访问内部网络

    我们将现有的开发集群从 1 13 6 gke 13 升级到 1 14 6 gke 13 我们的 Pod 无法再通过 Google Cloud VPN 访问我们的内部网络 我们的生产集群 仍在 1 13 上 共享相同的 VPC 网络和 VPN
  • 集合的快速交集:C++ 与 C#

    在我的机器 四核 8GB RAM 上 运行 Vista x64 Business 使用 Visual Studio 2008 SP1 我试图非常快速地求出两组数字的交集 我在 C 中实现了两种方法 在 C 中实现了一种 到目前为止 C 方法
  • JDK 和 JRE 有什么区别?

    编者注 这个问题是在 2009 年提出的 当时的世界已经不同了 2022 年 标准开源 OpenJDK 仅包含 JDK JDK 和 JRE 有什么区别 它们的作用是什么 我什么时候应该使用其中之一 The JRE is the Java运行
  • 如何检查系统是大端还是小端?

    如何检查系统是大端还是小端 在 C C 中 int n 1 little endian if true if char n 1 也可以看看 Perl版本
  • 默认显示 android SearchView EditText

    我在 android 中使用 SearchView 当我第一次登陆该页面时 所有可见的都是搜索图标 然后 当我单击该图标时 会出现 EditText 如何让 EditText 从一开始就可见 这是我的 xml
  • 计算向量中的出现次数

    该程序从 txt 文件中读取数字字符串 将它们转换为整数 将它们存储在向量中 然后尝试以有组织的方式输出它们 如下所示 如果 txt 文件显示 7 5 5 7 3 117 5 程序输出 3 5 3 7 2 117 因此 如果该数字出现多次
  • 是否可以在 Access 中创建递归查询?

    我有一个job table Id ParentID jobName jobStatus 根 ParentID 为 0 是否可以在 Access 中创建查询来查找给定的根job 数据库是MDB 没有链接表 Access版本是2003 job可
  • 从网络摄像头获取最新帧

    我正在使用 OpenCV2 通过网络摄像头拍摄一些延时照片 我想提取网络摄像头看到的最新视图 我尝试像这样完成这个任务 import cv2 a cv2 VideoCapture 1 ret frame a read The followi
  • 安全地散列密码 - 这么多相互矛盾的建议!

    我读到了很多关于如何安全存储密码的相互矛盾的建议 我唯一确定的是不要使用MD5 我见过有人提倡使用 PHPbcrypt函数 这似乎会占用服务器的处理器 我见过提倡盐的人 也见过提倡不使用盐的人 一切都是那么的不明朗 关于如何安全存储密码是否