为了账号安全,请及时绑定邮箱和手机立即绑定

可以解密MD5散列吗?

可以解密MD5散列吗?

可以解密MD5散列吗?有人告诉我,他看到软件系统:从其他系统检索MD5加密密码;解密加密密码使用系统自己的算法将密码存储在系统的数据库中。这有可能吗?我认为解密MD5散列是不可能的/不可行的。我知道有MD5字典,但是有真正的解密算法吗?
查看完整描述

4 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

否。MD5不是加密(虽然它可以作为某些加密算法的一部分),它是一种方法。散列函数..作为转换的一部分,许多原始数据实际上是“丢失”的。

想想看:MD5总是128位长。这意味着有两个128可能是MD5散列。这是一个相当大的数字,但它绝对是有限的。然而,对给定的哈希函数有无限多个可能的输入(其中大多数包含超过128位,或仅为16个字节)。因此,实际上有无限多的数据可能会散列到相同的值。让哈希有趣的是,要找到两个散列到相同值的数据是非常困难的,而且意外发生的概率几乎为0。

(非常不安全的)哈希函数(这说明了它是单向的)的一个简单例子是,获取一段数据的所有比特,并将其作为一个大数字来处理。接下来,使用一些大的(可能是素数)来执行整数除法。n并取其余部分(见:模数)。你将被留下一些数字介于0和n..如果要再次执行相同的计算(在任何时间、在任何计算机上、在任何地方),使用完全相同的字符串,它将得到相同的值。然而,没有办法找出原值是什么,因为有无数的数字有这个精确的余数,除以n.

也就是说,md5已经被发现有一些弱点,例如通过一些复杂的数学,可以在不尝试2的情况下找到碰撞。128可能的输入字符串。而且大多数密码都是短的,而且人们经常使用公共值(如“密码”或“秘密”),这意味着在某些情况下,您可以通过搜索哈希或使用彩虹台..这就是为什么你应该永远“食盐“散列密码,以便两个相同的值,当散列时,不会散列到相同的值。

一旦通过散列函数运行了一段数据,就不会返回。


查看完整回答
反对 回复 2019-06-01
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

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

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

MD5是用于密码的糟糕哈希:

  • 这是快速的,这意味着如果你有一个“目标”哈希,它是便宜的尝试了很多密码,看看你是否能找到一个哈希的目标。腌制无济于事

    那,那个

    方案,但这有助于使试图找到与任何一个密码匹配的密码变得更昂贵。

    倍数

    使用不同盐类的散列。
  • 我相信它有一些缺陷,可以更容易地找到冲突,尽管在可打印的文本(而不是任意的二进制数据)中找到冲突至少要困难一些。

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


查看完整回答
反对 回复 2019-06-01
?
暮色呼如

TA贡献1853条经验 获得超9个赞

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

但这并不意味着

  • 活的


  • 安全

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


MD5哈希登录方式工作是:

注册期间:
用户创建密码>密码使用md5->存储在数据库中的散列。

登录期间:
用户输入用户名和密码->(用户名检查)密码使用md5->哈希与数据库中存储的散列进行比较。

当需要“丢失密码”时:

2个备选方案:

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



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


查看完整回答
反对 回复 2019-06-01
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

不是直接的。因为针孔原理,对任何给定的MD5输出都有(可能)不止一个哈希值。因此,你不能肯定地逆转它。此外,MD5是为了使人们很难找到任何这种反向散列(然而,有一些攻击产生了碰撞-也就是说,生成两个对相同结果进行散列的值,但不能控制得到的MD5值是什么)。

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


查看完整回答
反对 回复 2019-06-01
  • 4 回答
  • 0 关注
  • 819 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信