0
A
回答
2
你不能。散列算法是单向。这意味着你不能“撤销”它们。你可以做的是将散列值与它们进行比较,看看它们是否匹配。
if ($hashed_value === md5('some string')) {
//they match
+1
好吧,所以也许我的解决方案是我的密码在我的项目的更新配置文件页面中保留空白谢谢先生 – user2805941
0
没有PHP函数来“解码”MD5哈希值。如果你真的想要找出哈希的原始字符串,那么你可以使用rainbow tables。
这使您可以查找已知哈希的原始值。但是不能保证你能够在任何合理的时间内找到你正在寻找的那个,或者根本不能保证。
1
正如其他人提及的,散列是(或应是)的单向加密方法。但是,随着lookup tables的发展,存储散列并不像以前那样安全。
但是,使其成为小更好的一种方法是在加密密码时使用salt。例如:
$salt = "[email protected]#$%^&";
// registration
$password = "letmein";
$dbPassword = md5($salt . $password); // f5eb04f754cff9cd2a4acae54f84dd90
// When they go to login:
$password = $_POST['password'];
$usrPassword = md5($salt . $password);
这样,即使他们通过一个安全漏洞获得哈希它总是要腌前缀使得它(几乎没有),匹配在数据库中的实际哈希值。因此,使用例如:
$password = $_POST['password']; // "[email protected]#$%^&letmein"
$pwWithSalt = $salt . $password; // "[email protected]#$%^&[email protected]#$%^&letmein"
当然,这是一个简单的例子(你不会让盐是显而易见的),但是你至少可以增加复杂性的另一个层面,这使得查找表效果稍差。
我还要提到的是crypt
有此内置而且可能比MD5
相关问题
- 1. MD5散列字符串
- 2. MD5散列或加密其字符串?
- 3. 生成MD5散列字符串T-SQL
- 4. 计算字符串的MD5散列阶
- 5. 散列的md5散列
- 6. MD5散列逆转
- 7. MD5散列函数
- 8. MD5没有给出正确的散列?
- 9. 散列字符串和相关异常
- 10. Java MD5散列不匹配C#散列
- 11. 如何在C中创建一个字符串的md5散列?
- 12. 安全使用md5散列作为注册字符串标记?
- 13. 使用散列表和字符串打印md5校验和值
- 14. 任何方式来MD5散列在WiX字符串?
- 15. 在GWT/GWT-Ext中密码字符串的md5散列?
- 16. JavaScript MD5哈希与Java Applet MD5散列?
- 17. 如何正确地散列字符串
- 18. md5散列值出错
- 19. md5/sha1散列大文件
- 20. 解码MD5散列成Unicode
- 21. 制作md5散列哈希
- 22. 填充MD5散列算法
- 23. 如何使用md5散列?
- 24. PHP - MD5,SHA,安全散列
- 25. md5散列值更改
- 26. 消息摘要散列MD5
- 27. 组合MD5散列值
- 28. C#MD5散列器例如
- 29. 无法获取md5散列
- 30. 从char生成MD5散列[]
我已经做了一些轻微的措词你的问题更好的解决方案。如果它不完全符合您的要求,请随时恢复。 – 2013-09-27 00:20:44
当然,这是一个散列,但不要把它看作只是加密时的散列。加密它,加入盐,迭代很多次,然后我们可以谈。现在当然你不能“散列”一个散列,首先散列的重点是什么?您只能比较散列字符串的结果。 – Jonast92
您正在考虑错误的方式......我们正在对密码进行加密,而不是稍后解密它们,但要保护它们。如果稍后需要比较输入密码是否与数据库中的加密值相匹配,则需要使用相同的哈希处理,然后比较两个哈希值。如果它们匹配,则可以假定输入的密码是正确的。希望这可以帮助。 – Thanos