我目前正在使用MD5和SHA1将用户的密码保存在数据库中,但我不知道如何以纯文本格式将其恢复。我试图回滚用于加密密码的相同代码,但它给了我一个错误。
我用来加密密码的代码:
$hashedpassword = md5(md5(sha1(sha1(md5($normalpassword)))));
我试着像这样做了同样的事情
$normalpassword = md5(md5(sha1(sha1(md5($hashedpassword)))));
然后我意识到这很有趣:( !!请帮助我......
答案 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无法以明文形式获取密码。
如果需要,请使用对称密码。