如何让 MD5 更安全?或者说真的有必要吗?

2024-01-18

我将用户名和密码存储在 MySQL 数据库中,并使用 MD5 对它们进行哈希处理。然而,我只使用标准的 PHP 函数,没有任何修改。现在,我读到 MD5 已损坏。你做得怎么样?您是否通过不同的哈希机制运行多次或添加某种形式的盐?


我很惊讶人们如何跟上“该死的,它坏了,我不会用它!”的潮流,不要犯同样的错误。

你无法让 MD5 变得更好。即使使用 SHA-1 也容易受到与 MD5 相同类型的攻击。 使用 bcrypt 将比 MD5 和 SHA 算法使用更多的 CPU。

MD5 的设计目标是速度快,与 SHA 相同。 bcrypt 不是,它允许更多排列,这使得某人更难尝试解密原始字符串。

您需要知道为什么 MD5 被认为是“损坏的”。

  • 因为可以快速计算长度最多 6 个字符的密码彩虹表.

利用当今的计算能力,人们可以创建一组字符和所有排列的 MD5,并将它们映射到原始字符串。这就是你获得彩虹桌的方式。如果有人下载您的数据库,然后将密码与彩虹表进行比较 - 他们可以获得用户的原始密码。这之所以危险,是因为人们在许多事情上使用相同的密码 - 包括贝宝和其他货币处理服务。这就是为什么你使用所谓的盐。这使得获取原始字符串变得更加困难,因此对用户的密码加盐(比方说,通过反转密码并对反转的输入进行 MD5 处理)将使攻击者更难将哈希值恢复为原始字符串。

  • 因为碰撞.

什么是碰撞?如果你给散列函数两个不同的字符串,它返回相同的散列 - 这就是冲突。它如何转换为用于登录的网络密码和哈希密码?如果您的 user1/password1 和 user2/password2 有相同的哈希值 - 他们可以以其他人的身份登录。这就是碰撞在安全中发挥作用的地方。

MD5 被认为损坏的原因是因为 MD5 对于差异较小的字符串返回相同的哈希值。而且要计算该字符串可能是什么并不容易! 从数学的角度来看 - 是的,它是“损坏的”,因为如果你的字符串有 100 个字符,并且它与其他字符串有 10 个字符不同(10% 的差异) - 你会得到相同的哈希值。

适用于 MD5 的内容也适用于所有哈希算法。最后,他们所有人没有无限数量的可能的哈希值。 然而,其中一些(例如 MD5)的哈希值可能较少并且执行速度更快。

最后,如果有人访问您的数据库 - 您将面临比使用 MD5 而不是 bcrypt 或 SHA1 更大的问题。

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

如何让 MD5 更安全?或者说真的有必要吗? 的相关文章

  • 使用 php-ews(Exchange Web 服务)在特定日期后获取电子邮件

    在我的 PHP 脚本中 我需要弄清楚如何检索指定消息 ID 之后或特定日期之后的所有电子邮件 两者都可以 我只需要检索自上次抓取收件箱以来的新电子邮件 这个收件箱每天收到数千封电子邮件 而且我在 30 天内无法删除任何电子邮件 对于初始导入
  • 免费 PHP 登录库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • CodeIgniter 自定义库未加载

    我是 CodeIgniter 的新手 并尝试用它开发一个相当简单的应用程序 只是一个用于处理想要娱乐中心通行证的员工的注册的表单 我正在尝试将事物分开以使它们更清晰 这是代码 应用程序 控制器 reccenter php class Rec
  • PHP 通过 SSL 连接到 MS SQL

    我想要实现的目标非常简单 我想通过安全连接从 PHP 脚本连接到外部 MS SQL 数据库 然而 这已被证明是有问题的 到目前为止 经过三个小时的研究 我不知所措 客户端的平台是Ubuntu 这意味着我无法使用SQLSRV 安全连接已经在不
  • 将 PHP 短开放标签替换为

    我有大量多年来编写的 php 文件 我需要将所有短开放标签正确替换为正确的显式开放标签 change
  • 如何使用 PHP 构建正确的 SOAP 请求

    我需要格式化 构建此 SOAP 服务 的请求 http api notificationmessaging com NMSOAP NotificationService wsdl http api notificationmessaging
  • PHP WCF 集成

    是不是如果我想支持php客户端访问我的服务 我必须有一个基本的http端点 这是因为php仍然只支持soap 1 1吗 据我所知 自从我使用 PHP 以来已经两年了 情况仍然如此 如果客户端应用程序将使用 PHP 的内置 SoapClien
  • PHP:读取所有传入 HTTP 请求的类 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 PHP 的 HTML 页面中显示错误消息?

    我有以下登录表单 login php 其中要求输入用户名和密码
  • 如何使用 JNDI 和 Digest-MD5 对 LDAP 进行身份验证

    我正在尝试使用 DIGEST MD5 加密对 LDAP 服务器进行身份验证 使用简单加密时 它工作得很好 但由于显而易见的原因 我无法通过网络以纯文本形式发送密码 奇怪的是 在使用 Softerra LDAP 浏览器时 我可以使用 Dige
  • 分页显示所有其他页面上第 1 页的相同帖子

    我最近在创建即将发生的事件列表时得到了很多帮助 请参阅此处显示即将举行的活动 包括今天的活动 https stackoverflow com questions 17343615 showing upcoming events includ
  • 使用 PHP glob 列出 FTP 服务器上的文件不起作用

    我使用此代码来访问目录 location files pictures glob location png 我想使用 FTP 访问远程路径 location opendir ftp user password host name files
  • 使用值填充的 Symfony2 自定义字段类型

    这是先前问题的后续问题Symfony2 自定义表单类型或扩展 https stackoverflow com questions 24079288 symfony2 custom form type or extension 我正在尝试为订
  • Facebook PHP-SDK 页面刷新后似乎丢失了 userID

    我似乎登录工作正常 我可以登录 接受应用程序 第一次 然后显示用户信息 例如姓名 图片 等 然而 当我刷新页面时 userid 又回到 0 我必须再次登录 我不确定问题是什么 我必须在每次页面加载时重新启动它还是什么 我不知道 我会发布一些
  • 使用PHP从doc、xls文件中读取数据

    我想知道是否可以从 doc 和 xls 文件中读取数据并将 将内容读取到图像文件中 创建文档的页面样本 例如 我有一些文件希望我的客户购买 所以我需要自动创建小图像 例如我的文档样本 我们将不胜感激您的帮助 对于读取 xls 文件 我真的推
  • 字符串相似度的算法(比Levenshtein和similar_text更好)? php, Js

    在哪里可以找到比 levenshtein 和 phpimilar text 方法更准确地评估错误字符的拼写的算法 Example similar text jonas xxjon similar echo similar returns 6
  • PHP 检查当前日期是在设定日期之前还是之后

    我从数据库中提取一个日期 其格式为 dd mm YYYY 我想做的是检查当前日期 如果当前日期早于数据库中的日期 则需要打印数据库日期 如果是在之后 则需要打印 继续 有人能指出我正确的方向吗 if strtotime database d
  • PHP 拒绝从 var_dump、print 等输出数据

    我目前正在运行 WAMP 服务器 并且在过去的 30 分钟内一直在尝试弄清楚我的项目如何以及为什么不会输出任何指定的 PHP 数据 起初我以为是因为我有一个 htaccess文件的output buffering被禁用 所以我删除了它 仍然
  • 使用 Vue 的多模式组件

    我在 Vue 中实现动态模式组件时遇到问题 A common approach I follow to display a set of data fetched from the db is I dump each of the rows
  • 矩形超出边界是什么意思

    PPB Graphics2D PaintImageData 矩形超出界限是什么意思 我几乎在我检查的每一段代码中都看到了它 最新的代码是 define my consumer key define my consumer secret oa

随机推荐

  • Typescript - 基于另一个属性的条件属性

    定义类型时 我们可以根据另一个属性来使一个属性成为必需的吗 一个例子是 type Parent children Child childrenIdSequence string Only make this required when ch
  • 当键盘出现时向上移动视图

    问题 我有一个ViewController有一个子类UIScrollView in it 在scrollView中有3个UITextFields 其中 2 个带有数字键盘 1 个带有UIPickerView键盘 问题是当键盘出现时 它会隐藏
  • 如何退出 win32com 上的 Outlook?

    我有一个检查我的 Outlook 文件夹的脚本 不便的是 我的 Outlook 可能已经打开 或者如果没有打开 脚本将在后台为我打开 Outlook 我想简化它 以便如果我的 Outlook 已打开 则保留它 如果它是由脚本调度的 请随后退
  • DAG 在 RDD 中是如何工作的?

    The 火花研究论文 http www cs berkeley edu matei papers 2012 nsdi spark pdf提出了一种基于经典 Hadoop MapReduce 的新分布式编程模型 声称在许多情况下 特别是在机器
  • “git pull --all”可以更新我所有的本地分支吗?

    我经常有至少 3 个远程分支 master staging 和 production 我有 3 个本地分支来跟踪这些远程分支 更新我所有的本地分支机构很乏味 git fetch all git rebase origin master gi
  • 如何使用应用程序工厂正确设置 Flask-admin 视图?

    我正在尝试设置使用 SQLAlchemy 进行 Flask admin 模型视图 https flask admin readthedocs org en v1 0 9 quickstart model views反对 用户 和 角色 模型
  • 新的 JS SDK 与 OAuth 2.0 在 fbsr_ cookie 中保存子域?

    编辑 此错误已记录 并确认为脸书错误 https developers facebook com bugs 256155664428653 browse search 4e843e6d89a232275456793 现在已经修复了 我正在测
  • Robot Framework 使用 Robot Framework/selenium 获取后台调用

    我正在使用 selenium 测试一个 Web 应用程序 我想检查的是是否有在后台完成的调用 post get 例如我加载 google com 在开发人员选项中我可以看到它执行了一些请求 我调查了文档 https github com r
  • 如何检测ftp文件名是一个目录?

    在 Java 中 我试图删除 ftp 目录 但如果它不为空 我需要通过调用删除其中的所有文件和子目录files ftp dir 我可以从目录中获取列表 但如何判断列表中的项目之一是文件还是子目录 有没有files i IsDirectory
  • 在匿名函数内的公式中使用定额

    我尝试使用定额在自定义函数中传递变量名称以进行数据处理并在公式中使用 但我在公式中使用定额不正确 有没有更好的方法来取消引用公式中的参数 library dplyr library broom library purrr library t
  • 永久关闭 Eclipse 中的拼写检查

    每次在 Eclipse 中创建新工作区时 我都必须通过首选项关闭拼写检查 首选项 gt 常规 gt 编辑器 gt 文本编辑器 gt 拼写 gt 启用拼写检查 这非常令人恼火 如何永久关闭拼写检查 IE 当我创建新工作区时 拼写检查器被禁用
  • Python 3:我们可以在调用实例的多个方法时避免重复实例名称吗?

    我现在 或者我已经读到 它在 Python 2 x 中是不可能的 并且在 Python 3 中也找不到它 但也许我不知道如何搜索它 用一个简单的 Python 示例更容易解释它 for i in range 11 one turtle pe
  • 代理后面的 PyQt + QtWebkit

    我正在编写一个 PyQt 功能强大的 Qt 库的 Python 绑定 应用程序 并且我的应用程序的一小部分需要 Web 浏览器 提示 OAuth 所以我开始使用 QtWebkit 顺便说一下 它非常棒 唯一的问题是我想允许代理后面的用户使用
  • C# 通过多级数组仅根据Key名称查找JSON值

    我有各种输入 JSON 格式的数据 它们都包含特定的键名terminalSize 这是我唯一知道的作品 JSON 树的总数或确切深度terminalSizeJSON 树内部将永远是未知的并且可能会发生变化 我正在寻找一个 C 解决方案来循环
  • 添加片段容器视图后 Android 膨胀布局崩溃

    目前我有一个扩展 AppCompatActivity 的自定义抽屉活动 如下所示 public class DrawerActivity extends AppCompatActivity implements NavigationView
  • Eclipse自动补全问题

    刚刚安装了 Eclipse Helios Win7 64 我遇到了一个奇怪的问题 我输入 syso Ctrl Space 预计会完成 System out println 但它不起作用 我在网上搜索了大约一个小时 我将 首选项 gt Jav
  • iPhone 故障保护多个文件下载

    我的应用程序正在从服务器下载图像包 它是来自 XML 的直接链接 20 50 个文件 的数组 如何确保整组图像已完全下载 如果使用 iPhone 按钮关闭应用程序 如何添加条件来取消整个下载 并删除所有已下载的文件 这些方法在 AppDel
  • RestTemplate getForObject 无法映射自定义类

    自定义类结构 DocumentListVO 与 JSON 响应一对一映射 但在使用时DocumentListVO dv1 restTemplate getForObject uri DocumentListVO class 它抛出以下堆栈跟
  • 在模拟器 GenyMotion 上加载 React Native 问题

    我正在使用本机反应 react native cli 2 0 1 react native 0 55 3 我正在通过react native run android 屏幕始终加载应用程序 调试器模式 注意 这是一个突然的问题 直到昨天为止都
  • 如何让 MD5 更安全?或者说真的有必要吗?

    我将用户名和密码存储在 MySQL 数据库中 并使用 MD5 对它们进行哈希处理 然而 我只使用标准的 PHP 函数 没有任何修改 现在 我读到 MD5 已损坏 你做得怎么样 您是否通过不同的哈希机制运行多次或添加某种形式的盐 我很惊讶人们