是否可以解密 MD5 哈希?

2 encryption decryption md5 hashing decrypt

我正在观看有关如何使用 MD5 哈希对密码进行哈希处理的视频。在谷歌上搜索之后,我发现 Facebook 也使用 MD5 散列方案。现在我很想知道我们是否可以轻松解密密码?如果是这样,那么 MD5 散列的优势是什么?

Ric*_*lka 9

简短回答: MD5 是一种对密码进行比较的足够了解的方法 - 一个独特的指纹 - 而不实际保留密码。

更长一点: MD5 可以被认为是一个指纹生成器。您可以获取尽可能多的位,最后是 128 位。对于任何字符串,md5sum 将始终相同。但是,很难预测任何给定字符串的 md5sum 是什么。它无法逆转。您无法从哈希中取回密码,该信息将被丢弃。

为什么是MD5?您不想存储实际密码。如果我能闯入你的数据库,我就能得到密码。这是不安全的。

所以我可以存储一个哈希值。登录时,我会得到您输入的密码的 md5sum 以及数据库中的 md5sum,看看它们是否匹配。然后,即使你得到了哈希,你也不能倒退得到密码。您已经获得了哈希值,但理论上您无法获得密码。

这更安全,但请记住,相同的密码将始终散列到相同的 md5。“密码”将始终为 286755fad04869ca523320acce0dc6a4。如果我在数据库中看到 286755fad04869ca523320acce0dc6a4,我就知道你的密码是“password”。因此,一种技术是在您的密码中添加一些称为“盐”的东西。所以,对我来说,我的盐被选择为,哦 Idunno,'1b24'。我将其添加到 md5 数据中,得到 c4f8469e00c67d70dfbaa91cdf948fa8。当我存储密码时,我可能会存储 1b24|c4f8469e00c67d70dfbaa91cdf948fa8。然后,当您输入“密码”时,我在数据库中看到我需要添加 1b24,然后我会得到匹配项。

MD5 实际上并不多用于此。有较新的(如 SHA1)可以更好地处理这些位。有时你会经历多轮。这通过使生成这些指纹的大量列表变得更加困难来增加安全性 - 计算时间太长。


EBG*_*een 6

MD5 是一种单向哈希。这已经在堆栈溢出中讨论过几次:

/sf/ask/86859671/

/sf/ask/103015811/