如何使用PHP解密哈希密码?

时间:2012-08-29 08:52:22

标签: php

我目前正在使用MD5和SHA1将用户的密码保存在数据库中,但我不知道如何以纯文本格式将其恢复。我试图回滚用于加密密码的相同代码,但它给了我一个错误。

我用来加密密码的代码:

   $hashedpassword = md5(md5(sha1(sha1(md5($normalpassword)))));

我试着像这样做了同样的事情

   $normalpassword = md5(md5(sha1(sha1(md5($hashedpassword)))));

然后我意识到这很有趣:( !!请帮助我......

4 个答案:

答案 0 :(得分:16)

MD5和SHA-1是单向散列函数,这意味着您无法从散列值中返回原始字符串。

答案 1 :(得分:4)

你做不到。散列是一种方法,你必须在登录表单中生成输入的新哈希,并检查它是否等于存储的哈希值。

答案 2 :(得分:4)

哈希加密。

像MD5和SHA1这样的哈希函数无法反转,只能验证它。这通常是使用散列函数的要点,因为攻击者无法使用散列检索明确的密码(其他攻击,如使用彩虹表是可能的)。

可在此处找到更多详细信息:http://en.wikipedia.org/wiki/Cryptographic_hash_function

如果要在数据库中存储散列密码,请查看PHPass。对于php来说,这是一个很好的类,可以像现在这样对哈希和验证密码进行优化,并且在现代基于php的Web应用程序中得到广泛使用。

答案 3 :(得分:2)

如果您最终想要它们,为什么还要对它们进行加密?正好使用散列是因为UNABLE无法以明文形式获取密码。

如果需要,请使用对称密码。