首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可以解密MD5散列吗?

可以解密MD5散列吗?
EN

Stack Overflow用户
提问于 2009-08-06 19:25:24
回答 22查看 554.1K关注 0票数 281

有人告诉我,他见过的软件系统:

  1. 从其他系统中检索MD5加密密码;
  2. 解密加密的密码
  3. 使用系统自己的算法将密码存储在系统的数据库中。

这有可能吗?我认为解密MD5散列是不可能的/不可行的。

我知道有MD5字典,但是有真正的解密算法吗?

EN

回答 22

Stack Overflow用户

发布于 2009-09-24 13:20:56

你不能-在理论上。散列的全部意思是它只是一种方式。这意味着,如果有人设法获得哈希列表,他们仍然无法获得您的密码。此外,这意味着即使有人在多个站点上使用相同的密码(是的,我们都知道我们不应该使用,但是.)任何访问站点A的数据库的人都不能在站点B上使用用户的密码。

MD5是一个散列的事实也意味着它会丢失信息。对于任何给定的MD5哈希,如果允许任意长度的密码,则可能有多个密码产生相同的哈希。对于一个好的散列,在计算上不可能找到超过一个非常琐碎的最大长度,但是这意味着如果您找到一个具有目标哈希的密码,它肯定是原始密码。从根本上说,你不太可能看到两个ASCII--只有合理长度的密码--具有相同的MD5哈希,但这不是不可能的。

MD5是用于密码的一个糟糕的散列:

  • 这是快速的,这意味着如果你有一个“目标”哈希,它是便宜的尝试了很多密码,看看你是否能找到一个哈希的目标。盐渍对这种情况没有帮助,但是尝试使用不同的盐类找到一个匹配多个散列的密码会使它变得更昂贵。
  • 我相信它有一些缺陷,可以更容易地找到冲突,尽管在可打印的文本(而不是任意的二进制数据)中找到冲突至少要困难一些。

我不是一个安全专家,所以不会提出一个具体的建议以外的“不要滚动您自己的认证系统”。从有信誉的供应商那里找到一个,并使用它。安全系统的设计和实现都是一项棘手的工作。

票数 159
EN

Stack Overflow用户

发布于 2009-09-24 13:23:25

从技术上讲,是“可能的”,但在非常严格的条件下, (彩虹桌,基于用户密码在哈希数据库中的可能性很小)强制执行。

但这并不意味着

  • 活的 或
  • 安全

--您不想“反转” MD5 散列。使用下面概述的方法的,您将永远不需要这样做。“反向”(‘Reversing) MD5实际上被认为是恶意--一些网站提供了破解MD5哈希的能力,但它们都是包含字典单词、先前提交的密码和其他单词的大型数据库。有一个很小的可能性,它将使您需要的MD5哈希反转。,如果您有 盐渍 MD5散列--这也不起作用!:)

使用MD5哈希应该使用工作的登录方式是:

注册期间的

用户创建密码->密码使用存储在数据库中的MD5 ->哈希进行散列。

登录期间的

用户输入用户名和密码-> (用户名检查)密码使用MD5哈希哈希与数据库中存储的哈希进行比较。

当需要“丢失密码”时

2选项:

  • 用户发送一个随机密码登录,然后被窃听,以改变它在第一次登录。

  • 用户被发送一个链接来更改他们的密码(如果您有安全问题/等,可以进行额外的检查),然后新密码在数据库中被散列并替换为旧密码。
票数 55
EN

Stack Overflow用户

发布于 2009-08-06 19:28:06

不是直接的。由于针孔原理,(可能)有多个值可以散列到任何给定的MD5输出。因此,你不可能有把握地逆转它。此外,MD5是为了很难找到任何这样的反向哈希(然而,存在产生碰撞的攻击--也就是说,生成两个哈希值到相同的结果,但您无法控制结果的MD5值)。

但是,如果将搜索空间限制在例如,长度在N以下的公共密码,则可能不再具有不可逆性属性(因为MD5输出的数量远远大于感兴趣域中的字符串数量)。然后,您可以使用彩虹台或类似的反向散列。

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1240852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档