ChatGPT解决这个技术问题 Extra ChatGPT

是否可以解密 MD5 哈希?

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

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

那可能吗?我认为解密 MD5 哈希是不可能/可行的。

我知道有 MD5 字典,但有实际的解密算法吗?

还原 MD5 也会产生多个密码。
MD5 是一种摘要算法。把它想象成把牛变成牛排。现在尝试扭转这种情况。
@Arst 据我了解,是的,但前提是你有很多。即使你这样做了,你也不能反过来,因为算法故意丢失信息。
@mechanicalsnail 考虑到这个类比,人们可以从牛排上的 DNA 制作一个完全完美的克隆。 :))
@TrimikhaValentius MD5 是一种消化算法。把它想象成吃牛排>消化>输出。现在尝试扭转这种情况。

A
Adam Batkin

不。MD5 不是加密(尽管它可能被用作某些加密算法的一部分),它是一种单向hash function。作为转换的一部分,许多原始数据实际上“丢失”了。

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

(非常不安全的)哈希函数的一个简单示例(这说明了它是单向的一般概念)是获取一段数据的所有位,并将其视为一个大数。接下来,使用一些大(可能是素数)数 n 执行整数除法并取余数(参见:Modulus)。您将留下一些介于 0 和 n 之间的数字。如果您要再次执行相同的计算(任何时间、任何计算机、任何地方),使用完全相同的字符串,它将得出相同的值。然而,没有办法找出原始值是多少,因为有无数的数字在除以 n 时具有精确的余数。

也就是说,已发现 MD5 有一些弱点,例如通过一些复杂的数学运算,可能无需尝试 2128 个可能的输入字符串就可以找到冲突。而且大多数密码都很短,而且人们经常使用通用值(如“密码”或“秘密”)这一事实意味着,在某些情况下,您可以通过谷歌搜索哈希值或使用 { 1}。这就是为什么您应该始终使用“salt”散列密码的原因之一,以便两个相同的值在散列时不会散列到相同的值。

一旦一条数据通过哈希函数运行,就没有回头路了。


但是,在 MD5 散列空间中存在比最初想象的更多的冲突。它不再被认为是密码的最佳哈希值。
由于大多数密码都比 MD5 散列短,因此每个散列通常只有一个密码。 (而且找到一个,即使不是原始的,也足以访问帐户。)单向功能的重点是没有多个不同的原像,因此我们无法知道哪个是原始的,但真的很难找到一个原始值。
@Nick:实际上,RFC1321 明确表示:“该算法将任意长度的消息作为输入”
@Olathe - 我不确定我是否同意。给定一个散列,通常不可能确定(100% 确定)原始输入。 (通常)有无限数量的输入产生每个可能的(散列)输出。我说一般是因为,如果您知道(例如)您正在寻找一串 ASCII 字符,并且它小于 12 个字节,那么很可能只有一个输入会产生给定的输出。但是总会有冲突(无限),除非你有一些外部约束(比如我的例子)你永远不会知道哪个是正确的
@Adam Batkin,你是对的,但我并不是说 100% 确定。密码破解不能 100% 确定。发件人可能使用与解密其他英文明文相同的密钥来表示随机乱码而不是英文明文,但英文的概率非常接近 100%。同样,在长 UTF-8 日文诗歌密码和乱码字符串之间进行选择时,这首诗的概率接近 100%。这可以使用事后概率而不是预先选择的约束来完成。一般情况下显然做不到,但还是蛮有用的。
J
Jon Skeet

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

MD5 是哈希的事实也意味着它会丢失信息。对于任何给定的 MD5 哈希,如果您允许任意长度的密码,则可能有多个密码产生相同的哈希。对于一个好的散列,在一个非常微不足道的最大长度之外找到它们在计算上是不可行的,但这意味着如果你找到一个具有目标散列的密码,它肯定是原始密码。从天文数字上看,您不太可能看到两个具有相同 MD5 哈希的纯 ASCII、合理长度的密码,但这并非不可能。

MD5 是用于密码的错误哈希:

它很快,这意味着如果你有一个“目标”散列,尝试大量密码并查看是否能找到一个散列到该目标的密码是很便宜的。加盐对这种情况没有帮助,但它有助于使尝试找到与使用不同盐的多个哈希中的任何一个匹配的密码变得更加昂贵。

我相信它有已知的缺陷,可以更容易地找到冲突,尽管在可打印文本(而不是任意二进制数据)中找到冲突至少会更难。

我不是安全专家,所以除了“不要推出自己的身份验证系统”之外,我不会提出具体的建议。从信誉良好的供应商那里找到一个,然后使用它。安全系统的设计和实施都是一项棘手的工作。


是的,还有其他方法,但您需要了解 Jon 上面所说的内容——“你不应该通过电子邮件向他们发送密码——这是可能仍然敏感的敏感信息。” - 在最低级别,可以拦截电子邮件并检索敏感信息。密码应尽可能安全——通常只将其作为哈希值保存在数据库中。
此外,如果密码可以反转,这意味着任何可以访问您的数据库的人都可以获取用户的密码。不是一个好主意。一种方式的密码应该是规范;仅在绝对必要时才保留真实密码(即使是加密的)(例如,与另一个没有任何基于令牌的系统进行身份验证)。
我见过反垃圾邮件措施,其中接收者网络服务器拒绝传入邮件只是为了等待发件人的邮件服务器重试(垃圾邮件机器人通常只尝试一次)。这很容易超过你的 10 分钟超时。
@ravisoni:这可能是通过蛮力或查找表找到具有相同哈希值的值。不能保证它是原始明文值。
@ravisoni:这里的“正确”是什么意思?如果密码未知,则无法知道泄露的密码是否为原始密码。但关键是,像 MD5 这样的散列定义的一种方式会丢失信息。像这样的网站可以提供匹配的密码这一事实很好地证明了 MD5 是出于安全原因而使用的糟糕算法。
C
Chris Huang-Leaver

从技术上讲,这是“可能的”,但在非常严格的条件rainbow tables,基于用户密码在该哈希数据库中的可能性很小的情况下进行暴力破解)。

但这并不意味着它

可行或

安全的

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

使用 MD5 哈希登录的方式应该是: 注册期间:用户创建密码 -> 密码使用 MD5 哈希 -> 哈希存储在数据库中

登录期间:用户输入用户名和密码 ->(检查用户名)使用 MD5 对密码进行哈希处理 -> 将哈希值与数据库中存储的哈希值进行比较

当需要“丢失密码”时:2 个选项:

用户发送了一个随机密码来登录,然后在第一次登录时被窃听更改密码。

或者

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


我有一些挑剔。彩虹表不是暴力破解。实际上有一些程序和网站会暴力破解(非常简单)几个字符的密码(通常它们只会循环几个小时或几天,你可以填写一个哈希并希望它出现在循环中)。不幸的是,鉴于许多密码缺乏质量,弹出一个的机会并不是“一个非常小的机会”。
我不得不插话:逆向 MD5 本质上不是恶意的。你如何使用这种能力是决定恶意或善意的因素。如果有人想出如何扭转它并与世界分享,他们可能会赢得诺贝尔奖或其他什么。如果这是你想做的,永远不要害怕尝试逆向工程。这就是我们都变得更好的方式。但是如果你找到了 MD5 的逆向,然后利用它来谋取私利,那么是的,你是恶意的。
b
bdonlan

不是直接的。由于 pigeonhole principle,有(可能)不止一个值散列到任何给定的 MD5 输出。因此,您无法确定地扭转它。此外,MD5 使得很难找到任何这样的反向哈希(但是已经有产生 collisions 的攻击 - 即产生两个哈希到相同结果的值,但你可以'不控制生成的 MD5 值是什么)。

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


我要补充一点,找到另一个散列到相同输出的值称为“冲突”。这是破坏 MD5 散列系统的最常用方法。
@Reensis,实际上,找到散列到先前已知值的数据称为“原像”,这比碰撞要困难得多。尚未证明针对 MD5 的原像攻击,但已经使用了碰撞攻击。
散列函数(用于密码存储时)的重点不是有很多可能的密码给出相同的散列(有,但大多数比散列本身长),而是很难找到甚至其中之一(这足以访问系统)。是的,由于彩虹表,您不使用未加盐的哈希。而且由于密码空间小,您将使用慢速散列(如 bcrypt 或 scrypt)而不是快速散列(如 MD5/SHA-*/....)
从技术上讲,您不能确定地执行 MD5,因为硬件可能出现故障。同样,您可能无法确定密码是 password,而不是所有其他产生相同哈希但看起来非常随机的无限输入,但您可以足够接近。
鸽巢原理当然适用,但要找到散列到某个值的第二个输入(例如普通密码上的散列)在计算上仍然是不可行的。如果你找到一个散列到给定 H(X) 的 X,那么你可以确定 X 是正确的输入。这使得该答案的整个第一部分以及其余大部分都不正确。
M
Matthew Groves

不可能,至少在合理的时间内不可能。

通常处理这种情况的方式是密码“重置”。也就是说,您给他们一个新的(随机)密码并通过电子邮件发送给他们。


如果散列没有加盐,你会惊讶地发现它只需要谷歌搜索散列值的频率......
但是对于密码检索系统来说并不实用,即使是未加盐的系统:)
N
Nettogrof

您无法恢复 md5 密码。(任何语言)

但是你可以:

给用户一个新的。

检查一些彩虹表,也许可以找回旧的。


尼克斯彩虹桌的想法。如果你正在腌制——你应该这样做——那么无论如何它都行不通。
@StevenSudit 如果他们仍在使用 MD5 来散列密码而不是使用强密码散列,那么您不能假设他们使用的是盐。也许他们有,也许他们没有。
R
Robert Greiner

不,他一定是对 MD5 字典感到困惑。

加密哈希(MD5 等)是一种方法,除非您有一些关于原始消息等的其他信息,否则您无法仅使用摘要返回原始消息。


S
Sinan Taifour

解密(以算法的方式直接从哈希值中获取纯文本),不。

但是,有些方法使用所谓的 rainbow table。如果您的密码在没有盐的情况下进行哈希处理,这是非常可行的。


S
Svetlozar Angelov

MD5 是一种散列算法,不能还原散列值。

您应该添加“更改密码功能”,用户提供另一个密码,计算哈希并将其存储为新密码。


B
Bill the Lizard

没有简单的方法可以做到这一点。这是首先对密码进行哈希处理的一种方式。 :)

您应该能够做的一件事是手动为他们设置一个临时密码并将其发送给他们。

我不愿提及这一点,因为这是一个坏主意(无论如何也不能保证有效),但您可以尝试在 milw0rm 之类的彩虹表中查找哈希,看看是否可以通过这种方式恢复旧密码。


D
Dinah

在此处查看所有其他答案,了解它如何以及为什么不可逆以及为什么您无论如何都不想这样做。

不过,为了完整起见,您可以在 rainbow tables 上查找可能的匹配项。无法保证彩虹表中的答案将是您的用户选择的原始密码,这会使他们非常困惑。

此外,这不适用于盐渍哈希。 Salting 是许多安全专家推荐的。


不正确。如果找到匹配项,则可以确定它将是原始密码。如果不是这种情况,那么给定任何 H(X) 都可能产生冲突,其中 X 是一条没有由对手确定的预定义结构的消息。为密码安全的散列函数找到这样的冲突在计算上是不可行的,即使它是一个损坏的散列函数,例如 MD5。
@MaartenBodewes:“如果找到匹配项,则可以确定它将是原始密码。”如果我们假设密码长度不受限制,我看不出情况如何。我会说它极有可能是原始密码,但不一定是。事实上,可能的密码比 MD5 哈希值多,这意味着必须有可能存在两个具有相同哈希值的密码。仅仅因为找到这样的碰撞在计算上不可行并不意味着它们不存在。还是我误会了你?
@JonSkeet如果故意找到碰撞在计算上是不可行的,那么偶然发现碰撞同样不可能或更糟。由于 MD5 的有限输出空间和生日问题,你会发现碰撞的机会大约是 2^64 中的 1(即大约输出空间的一半) - 这是在匹配大约 2^64 哈希之后。这甚至不考虑消息可能需要很小并且具有特定格式才能被视为密码。大多数密码的熵远低于 2^64 位。
@MaartenBodewes:但是“天文上不太可能”和“不可能”之间存在很大差异。 IMO,您关于确定它是正确密码的声明过于强大。这表明不存在的数学确定性。
您还可以一次性猜出 2^128 位 AES 密钥。这“只是”极不可能。密码学依赖于这种可能性。出于所有实际目的,如果您找到输入消息/密码,它将是您正在寻找的那个。理论上可以找到另一个输入消息很好,但是对于 StackOverflow 上的这个问题,不需要考虑它。彩虹表只填满了可能的密码。它们不会包含足够的数据,甚至不会有发生碰撞的机会(它们要么会在不知不觉中覆盖映射,要么会出名)。
N
Ned Batchelder

MD5 被认为是损坏的,不是因为您可以从散列中取回原始内容,而是因为通过工作,您可以制作两条散列到相同散列的消息。

您不能取消散列 MD5 散列。


按照设计,所有相同长度的哈希都会受到冲突的影响。限制变长数据时不可避免。 MD5 因其碰撞率而被认为已过时,而不是因为碰撞的事实。
MD5 被认为是损坏的,因为已证明构造碰撞输入的可能性。
K
Kage

就找到它的反函数而言,没有办法“恢复”散列函数。如前所述,这是拥有哈希函数的全部意义所在。它不应该是可逆的,它应该允许快速哈希值计算。因此,找到产生给定哈希值的输入字符串的唯一方法是尝试所有可能的组合。出于这个原因,这被称为蛮力攻击。

尝试所有可能的组合需要花费大量时间,这也是使用哈希值以相对安全的方式存储密码的原因。如果攻击者能够使用其中的所有用户密码访问您的数据库,那么您无论如何都会松懈。如果您有散列值和(理想情况下)强密码,那么攻击者就很难从散列值中获取密码。

存储散列值也没有性能问题,因为计算散列值相对较快。因此,大多数系统所做的是计算用户键入的密码的哈希值(速度很快),然后将其与用户数据库中存储的哈希值进行比较。


这个答案没有什么问题,只是散列函数的速度是一个很大的问题,因为大多数密码不够安全,并且允许对手执行字典攻击。出于这个原因,使用慢速密码散列函数而不是快速加密安全散列函数。
M
Maarten Bodewes

不,不可能反转诸如 MD5 之类的散列函数:给定输出散列值,除非知道有关输入消息的足够信息,否则不可能找到输入消息。

解密不是为散列函数定义的函数;加密和解密是密码的功能,例如 CBC 模式下的 AES;散列函数不加密也不解密。散列函数用于消化输入消息。顾名思义,设计上不可能有反向算法。

MD5 被设计为一种加密安全的单向哈希函数。现在很容易为 MD5 生成冲突 - 即使输入消息的大部分是预先确定的。因此 MD5 被正式破解,MD5 不应再被视为加密安全哈希。然而,仍然不可能找到导致哈希值的输入消息:当仅知道 H(X) 时找到 X(并且 X 没有具有至少一个 128 字节的预计算数据块的预计算结构) .没有已知的针对 MD5 的前映像攻击。

通常也可以使用蛮力或(增强的)字典攻击来猜测密码,比较数据库或尝试在所谓的彩虹表中找到密码哈希。如果找到匹配项,则在计算上可以确定输入已找到。散列函数对于碰撞攻击也是安全的:找到 X' 使得 H(X') = H(X) 给定 H(X)。因此,如果找到 X,则在计算上可以确定它确实是输入消息。否则你毕竟会执行碰撞攻击。彩虹表可用于加速攻击,并且有专门的互联网资源可以帮助您找到给定特定哈希的密码。

当然可以重新使用散列值 H(X) 来验证在其他系统上生成的密码。接收系统唯一需要做的就是存储将 H(X) 作为输入的确定性函数 F 的结果。当 X 提供给系统时,可以重新计算 H(X)F 并比较结果。换句话说,不需要解密散列值以仅验证密码正确,您仍然可以将散列存储为不同的值。

使用密码散列或 PBKDF(基于密码的密钥派生函数)代替 MD5 很重要。这样的函数指定如何将盐与哈希一起使用。这样就不会为相同的密码(来自其他用户或其他数据库)生成相同的哈希值。出于这个原因,密码哈希也不允许使用彩虹表,只要盐足够大并且适当地随机化。

密码哈希还包含一个工作因素(有时使用迭代计数进行配置),它可以显着减慢试图找到给定盐和哈希值的密码的攻击。这很重要,因为带有盐和哈希值的数据库可能会被盗。最后,密码散列也可能是内存硬的,因此需要大量内存来计算散列。这使得攻击者无法使用特殊硬件(GPU、ASIC、FPGA 等)来加快搜索速度。其他输入或配置选项(例如辣椒或并行化量)也可用于密码哈希。

但是,即使 H(X) 是密码哈希,它仍然允许任何人验证给定 H(X) 的密码。密码哈希仍然是确定性的,所以如果有人知道所有输入和哈希算法本身,那么 X 可以用来计算 H(X) 并且 - 再次 - 可以比较结果。

常用的密码哈希是 bcryptscryptPBKDF2。还有各种形式的 Argon2,它是近期密码哈希竞赛的获胜者。 Here on CrackStation 是一篇关于正确设置密码安全的好博文。

有可能使攻击者无法执行哈希计算来验证密码是否正确。为此,胡椒可以用作密码哈希的输入。或者,哈希值当然可以使用诸如 AES 的密码和诸如 CBC 或 GCM 的操作模式进行加密。然而,这需要独立存储密钥/密钥,并且访问要求高于密码哈希。


M
Maarten Bodewes

您可以找到使用字典检索原始消息的在线工具。

在某些情况下,字典方法可能毫无用处:

如果使用 SALT 消息对消息进行哈希处理

如果消息不止一次被散列

例如,这里有一个 MD5 decrypter 在线工具。


如果使用盐,彩虹表 - 不是字典攻击 - 是无用的。多次散列 - 没有盐 - 仍然允许彩虹表,尽管在网上找到一个预先存在的表肯定不太可能。
b
berkay

唯一可以工作的是(如果我们提到密码只是散列,没有添加任何盐来防止重放攻击,如果是这样你必须知道盐)顺便说一句,获取字典攻击工具,许多单词,数字等的文件然后创建两行,一行是单词,数字(在字典中)另一行是单词的哈希,如果匹配,则比较哈希...

这是唯一的方法,无需进行密码分析。


G
Girish Patidar

MD5 Hash算法是不可逆的,所以MD5解码是不可能的,但是有些网站有大量的密码匹配,所以你可以尝试在线解码MD5哈希。

在线尝试:

MD5 Decrypt

md5online

md5decrypter


是的,但这已经被问题所涵盖,如“我知道有字典”这句话。因此,仅仅指出字典并不能算作答案。
u
user3710044

是的,您所要求的正是可能的。没有帮助是不可能“解密”一个 MD5 密码的,但是可以将一个 MD5 密码重新加密为另一种算法,但不是一次性完成的。

您所做的是安排您的用户能够使用旧的 MD5 密码登录到您的新系统。在他们登录时,他们已经为您的登录程序提供了一个未经哈希的密码版本,您证明该密码与您拥有的 MD5 哈希值相匹配。然后,您可以将此未散列的密码转换为新的散列算法。

显然,这是一个扩展过程,因为您必须等待用户告诉您密码是什么,但它确实有效。

(注意:七年后,哦,希望有人会发现它有用)


谢谢回复。但是我要“1 up”你:)我不记得我是否真的这样做了,但理论上它应该可以工作。无需等待每个用户登录以便我们重新加密他们的密码,您可以简单地加密他们密码的散列版本。所以每个密码都会被 MD5 散列,然后加密。刚刚更新了密码检查以执行相同的操作,并且用户数据应该是安全的,无需用户干预。
对我上面的评论还有一个警告。我不是加密专家,所以我不确定这是否有任何进一步的安全隐患。例如,在加密之前加密弱散列的弱密码可能会危及加密的安全性(也许也使用另一种盐?)。此外,您可能会使用这些 MD5 散列密码进行备份。在进行此类升级时,最好使所有现有密码完全失效。
密码学家担心双重加密,但我认为他们只发现了有问题的琐碎案例。但我认为在这种情况下它没有用,因为 MD5 对于(不太长的文本)密码仍然是安全的。尽管如此,如果以前的开发人员忘记添加盐,双重哈希可能会很有用,否则,我想不出你不必告诉所有人密码应该被认为是 pwned 的情况。希望您的备份不会丢失,并且无论如何都已加密。
V
Vilx-

不,不能这样做。您可以使用字典,也可以尝试散列不同的值,直到获得所需的散列。但它不能被“解密”。


我看到这个网站将 md5 反转为原始文本:md5.gromweb.com。那怎么可能呢?
@samach321 - 简单:他们有一个哈希字符串数据库。您在他们的“将字符串转换为 MD5 哈希”框中输入的任何内容都会添加到数据库中。尝试从另一个来源获取 MD5 哈希并输入。除非它在他们的数据库中,否则你不会得到结果。
顺便说一句,它被称为彩虹桌。来自维基百科:“彩虹表是一个预先计算好的表,用于缓存密码散列函数的输出,通常用于破解密码散列。”
@JordanArseno - 我知道。对于这项任务,它是一种有效的数据结构,但归根结底,它仍然只是一种(非常具体的)数据库。
S
Steven Sudit

MD5 有它的弱点(参见Wikipedia),因此有一些项目尝试预先计算哈希。维基百科也暗示了其中一些项目。我知道(和尊重)的一个是 ophrack。你不能告诉用户他们自己的密码,但你可以告诉他们一个有效的密码。但我认为:只需邮寄一个新密码,以防他们忘记。


MD5 被破坏的事实(对于函数的特定但重要的用途)与彩虹表完全无关(这是您在提到哈希的预计算时暗示的)。
M
Maarten Bodewes

从理论上讲,不可能解密哈希值,但是您有一些肮脏的技术可以取回原始纯文本。

暴力破解:所有计算机安全算法都会遭受暴力破解。基于这个想法,今天的 GPU 采用了并行编程的想法,它可以通过使用任何图形处理器对纯文本进行大规模暴力破解来取回纯文本。这个工具 hashcat 完成了这项工作。上次我检查它的 cuda 版本时,我能够在 6 分钟内暴力破解一个 7 个字母长的字符。互联网搜索:只需将哈希复制并粘贴到谷歌上,看看是否可以在那里找到相应的明文。当您对某些东西进行渗透测试时,这不是一个解决方案,但绝对值得一试。一些网站维护字典中几乎所有单词的哈希值。


字典攻击是另一种方式,或者与您知道输入密码的其他数据库进行比较。
A
Ajanyan Pradeep

MD5 是一种加密(单向)散列函数,因此没有直接的方法对其进行解码。加密哈希函数的全部目的是您无法撤消它。

您可以做的一件事是蛮力策略,您可以在其中猜测散列的内容,然后使用相同的函数对其进行散列并查看它是否匹配。除非散列数据很容易猜到,否则可能需要很长时间。


o
oziomajnr

尚不可能将密码的散列放入算法中并以纯文本形式取回密码,因为散列是单向的。但是人们所做的是生成散列并将其存储在一个大表中,这样当您输入特定的散列时,它会检查表中与散列匹配的密码并将该密码返回给您。执行此操作的网站示例是 http://www.md5online.org/ 。现代密码存储系统通过使用加盐算法来解决这个问题,这样当您在注册过程中将相同的密码输入密码框时,会生成不同的哈希值。


R
Rafi Ahmad

不,您无法解密/反转 md5,因为它是一种单向哈希函数,直到您无法在 MD5 中找到广泛的漏洞。另一种方法是有些网站有大量的密码数据库,所以你可以尝试在线解码你的MD5或SHA1哈希字符串。我尝试了像 http://www.mycodemyway.com/encrypt-and-decrypt/md5 这样的 website,它对我来说工作正常,但这完全取决于您的哈希值,如果该哈希值存储在该数据库中,那么您可以获得实际的字符串。


不,MD5 不是加密,甚至不是单向加密(这首先没有意义)。

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅