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