-3

可能重复:
如何以纯文本形式输出 MD5 哈希密码?

我有一个小问题,下面是 nmy 代码是一个 '$teacherpassword' 变量,其中包含用户的密码和盐(随机字符)。

$teacherpassword = md5(md5("g3f".$teacherpassword."rt4"));

现在假设密码是“Cricket”,那么如果我回$teahcerpassword显,它不会输出“Cricket”这个词,它会输出密码哈希,即“1ac30ef9e714fff0ab12b398e379f358”。

我希望它输出“Cricket”这个词。我怎样才能让它输出密码字本身而不是密码哈希?

4

7 回答 7

4

哈希的意义在于它是单向的。它与双向加密不同。

你不能取消散列一些东西。

http://en.wikipedia.org/wiki/MD5

于 2012-08-27T17:10:18.657 回答
2

这是不可能的,哈希可以防止这种情况。散列算法将任意长度的输入缩短为恒定长度的输出。不可能做到这一点。

在正常的散列算法内部是使用的模运算符,它减少了信息计数。被删除的信息无法恢复。但是可以通过使用所谓的彩虹表来取回密码。但请注意,如果使用盐,这将更加复杂。

于 2012-08-27T17:10:34.937 回答
1

使用散列而不是加密密码,以使其他任何人(包括系统管理员)都无法获取某人的密码。您可以匹配哈希,但不能从中检索原始密码。

这是一个特点。它提高了安全性,因为唯一可以访问原始密码的人是创建密码的人。

于 2012-08-27T17:13:37.467 回答
1

如果您想验证用户是否输入了正确的密码......还要对输入的值进行哈希处理并匹配两个哈希值;-)。

于 2012-08-27T17:12:01.860 回答
0

您可以制作一个字典,其中包含一些单词并生成散列,但散列的一般概念是提取原始单词在计算上很困难

于 2012-08-27T17:12:24.047 回答
0

是不是不能输出MD5哈希。MD5 只是一种方式。如果你想要密码,你必须设置一个新密码。或者使用“开膛手约翰”来破解它......

于 2012-08-27T17:12:36.823 回答
0

哈希是一种单向加密。没有办法从哈希中获取密码。

于 2012-08-27T17:11:02.157 回答