如何爲每個用戶製作絕對原創的鹽? 在PHP中使用time()
函數更好嗎?PHP在我們這個時代給密碼加鹽的最佳方式
回答
在很多情況下,一個簡單的uniqid(mt_rand(), true)
會做隨機生成一個鹽。結合Blowfish應該給你一個相當不錯的密碼哈希。
替代品是僞隨機來源,例如/dev/urandom
或openssl_pseudo_random_bytes()
。還有一些服務可以爲您生成隨機數據(基於無線電主動降級)。
考慮使用隨機鹽代替非隨機..也許你會發現一些有用的東西這篇文章http://www.gregboggs.com/php-blowfish-random-salted-passwords/
此外,在看看這篇文章http://codahale.com/how-to-safely-store-a-password/
一種方法是產生爲每個用戶提供獨特的鹽,並將該鹽存儲在DB中。
另一個好方法是,生成密碼散列的算法必須計算超過秒的鹽。更復雜的哈希算法將是 - 更多的問題將面對誰想要破解你的數據庫
我不明白你的意思是「必須計算超過秒的鹽」。你的意思是執行時間應該超過一秒?請詳細說明這一點。 – nullability
@nullability是的,超過一秒執行 – Ribtoks
使用這條線在PHP
$salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
可以使用microtime()
函數在PHP中生成強鹽的人根據微秒生成一個數字,而不是秒,這使得用戶幾乎不可能與另一個用戶產生相同的鹽分。您也可以將此號碼與用戶的ID相乘。
也許md5(uniqid())
已經足夠用於你的應用。
編輯:忘記提及uniqid()
功能more_entropy參數。這將較小的相同字符串的機會,即使功能運行在同一個微秒的兩倍,所以編輯功能應該是這樣的:
$salt = md5(uniqid($user_id, TRUE));
- 1. 鹽密碼的最佳方式是什麼?
- 2. 我們在哪裏存儲密鑰/密碼/鹽進行加密?
- 3. 加密鹽ALGO CryptSharp給人密碼不同的加密.....如何得到這個
- 4. PHP鹽密碼
- 5. 最佳方式加密密碼PHP(2017年)
- 6. 密碼鹽:其他最佳實踐
- 7. PHP鹽加密/解密密碼
- 8. 使用鹽對密碼加密PHP
- 9. 當我使用鹽漬的CRYPT_MD5加密我的密碼時,什麼在加密?
- 10. 在PHP中加密變量的最佳方式我不希望人們看到,仍然能夠解密它?
- 11. 哪個是隱藏PHP源代碼的最佳方式?
- 12. 在給定的日期時間在JavaScript中執行代碼的最佳方式
- 13. 最佳的方式在PHP
- 14. 我在php的加密代碼錯誤
- 15. 鹽密碼Decypt方法
- 16. 在codeigniter中加密密碼的最佳方法是什麼
- 17. 什麼是最好的方式來記錄這個PHP代碼?
- 18. 摺疊此代碼的最佳方式?
- 19. 記錄python代碼的最佳方式
- 20. 訂購代碼的最佳方式
- 21. 代碼Top_Hits聚合的最佳方式
- 22. 寫這樣的重複代碼的最佳方式是什麼?
- 23. 如何使用密碼和鹽以這種方式進行AES加密,以便在Java中僅使用相同的密碼和鹽進行解密
- 24. 什麼是保持我的PHP文件只有PHP代碼的最佳方式?
- 25. 哈希密碼加鹽
- 26. 使用magento代碼調整我們的自定義圖像的最佳方式
- 27. 在php中使用這個數組循環的最佳方式
- 28. 加密密碼的最佳算法
- 29. 對於以下情況,這將是最佳加密方式?
- 30. 我怎樣寫(加密)我的PHP代碼,這樣
我認爲這是openssl_random_pseudo_bytes()from [link](http://php.net/openssl_random_pseudo_bytes) –