![是否可以解密 MD5 哈希值?](https://linux22.com/image/1314873/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%A7%A3%E5%AF%86%20MD5%20%E5%93%88%E5%B8%8C%E5%80%BC%EF%BC%9F.png)
我看过一个关于如何使用 MD5 哈希算法对密码进行哈希处理的视频。在谷歌搜索后,我发现 Facebook 也使用 MD5 哈希算法。现在我很好奇,我们是否可以轻松解密密码?如果是这样,那么 MD5 哈希算法的优势是什么?
答案1
简短回答:MD5 是一种对密码有足够的了解并可以对其进行比较的方法(一种独特的指纹),无需真正保留密码。
较长的一个: MD5 可以看作是一个指纹生成器。你可以取尽可能多的位,最终得到 128 位。任何字符串的 md5sum 都是一样的。但是,很难预测任何给定字符串的 md5sum 是什么。它无法逆转。你无法从哈希中恢复密码,这些信息会被丢弃。
为什么是 MD5?你不想存储实际的密码。如果我能闯入你的数据库,我就能得到密码。这是不安全的。
所以我可以存储一个哈希值。登录时,我会获取您输入的密码的 md5sum 和数据库中的 md5sum,看看它们是否匹配。然后,即使您获得了哈希值,您也无法反向获取密码。您获得了哈希值,但理论上您无法获取密码。
这样比较安全,但请记住,相同的密码将始终散列为相同的 md5。'密码' 始终为 286755fad04869ca523320acce0dc6a4。如果我在数据库中看到 286755fad04869ca523320acce0dc6a4,我就知道您的密码是 '密码'。因此,一种技术是添加一些称为 '盐' 的东西,使密码更具独特性。所以,对我来说,我的盐被选择为,哦,我不知道,'1b24'。我将其添加到 md5 数据中,得到 c4f8469e00c67d70dfbaa91cdf948fa8。当我存储密码时,也许我存储的是 1b24|c4f8469e00c67d70dfbaa91cdf948fa8。然后,当您输入“密码”时,我会在数据库中看到我需要添加 1b24,然后我就会得到匹配。
实际上,MD5 并不常用于此目的。有更新的算法(如 SHA1)可以更好地处理这些位。有时,您需要进行多轮计算。这增加了安全性,因为生成这些指纹的大量列表变得更加困难 - 计算时间太长。
答案2
MD5 是单向哈希。Stack Overflow 上已多次讨论过此问题:
https://stackoverflow.com/questions/1240852/is-it-possible-to-decrypt-md5-hashes
https://stackoverflow.com/questions/1471654/reversing-an-md5-hash
答案3
这篇文章IT 安全@stackexchange应该足以让你理解这个问题。
问题(大胆地)在于两个事实:
“md5_mixalpha-numeric-all-space#1-8: 1049 GB” 可作为免费种子下载,供所有人在以下站点下载:这些,这意味着超过 1TB 的不同唯一字符串包含混合较低的和大写字母和数字加空格和长度为 1 到 8 个字符。
假设您的硬盘上有这些文件(使用 squashfs 吧!),您只需搜索所需的 MD5,即可获得原始字符串(或者如果您是,甚至可以获得碰撞几乎不可能幸运的是,无论如何你都有一个有效的密码:)每个简单的哈希方案都存在一个问题,那就是两个使用相同密码的用户会得到相同的哈希值,逆转其中一个会同时给你多个账户,这只会加剧第一个缺陷的后果
对此有三种解决方案:
老旧的方案:
MD5(密码)或 SHA128(密码),默认情况下会被破解,许多 *NIX 至少二十年来都实现了更好的方案,没什么可补充的。MD5(SALT+密码),其中 SALT 对于每个用户都是唯一的,并以明文形式存储,这要求攻击者为想要破解的每个密码生成彩虹表。
可以阻止一些用户,但字典攻击仍然非常强大,因为许多/大多数用户的密码都很弱。
请记住,我们现在有解决方案可以(相对)便宜地租用强大的 GPU 集群,即使是 400 美元的 GPU 也是哈希字符串的猛兽,特别是如果计算分散式在数千台机器之中。
请明智地采用后一种解决方案,至少选择一种你不会尝试自己设计的 PKBDF2 方案,请看这里:
https://security.stackexchange.com/questions/3959/recommended-of-iterations-when-using-pkbdf2-sha256
答案4
当然不是解密,因为人们一直都在强调这一点。但是,现在有不少论文都在讨论强制 md5 碰撞。这基本上意味着,由于哈希值是由一组随机的“方程式”生成的,这些方程式应用于您正在哈希的每一位信息(请记住,您可以哈希任何内容,从密码到一个或多个文件),因此您还可以找到另一个将创建相同哈希值的未定义长度的字符串。
这是关于该主题的第一篇研究论文之一(我认为也是最好的研究论文之一)的链接。[PDF] http://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDcQFjAB&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.175.4122%26rep%3Drep1%26type%3Dpdf&ei=6OtQUZaQH8Si2QXhwoGYBA&usg=AFQjCNH3JEEhxpuNqY2N4x9lmHuuGIZvuQ