各位用php將密碼存入資料庫,都用什麼方法進行加密的?

來源:互聯網
上載者:User
都說md5不安全,貌似很多時候說是用sha1()進行加密更加安全,甚至還有用一種叫bcrypt的演算法,各位phper平時都是怎麼選擇的呢?

回複內容:

都說md5不安全,貌似很多時候說是用sha1()進行加密更加安全,甚至還有用一種叫bcrypt的演算法,各位phper平時都是怎麼選擇的呢?

題主你可以使用 md5 或者 sha1 進行初步處理,但為了更加安全,請你同時加上兩個 salt,一個靜態 salt,一個動態 salt。以 md5 為例:
假設通過 POST 傳來的密碼為 $_POST['password'],在存入 DB 前先進行如下的操作:

$password = hash('md5', $_POST['password'].$staticSalt.$dynamicSalt);

為了保證動態 salt 的唯一性,可以這樣操作:

$dynamicSalt = hash('md5', microtime());

對於動態 salt 可以與產生的密碼一起儲存在 DB 中,而靜態 salt 則可以直接放在類檔案中(例如定義為一個靜態屬性即可)。

首先謝謝題主採納了我的答案,但是我之前的回答並不是最佳答案,之所以有此加密的想法源於自己所讀的源碼可能比較老,所以並沒使用上較新版本的加密方法,例如 bcrypt等。

此外,第二點,感謝評論中幾位前輩的提點,已經明白設定靜態 salt 的意義並不大,產生一個較長的動態 salt 已然可以解決問題。

LZ應該採用加鹽HASH。
如何“醃制”密碼呢?
=_,=
正確的格式應該是,使用者password+動態salt

動態salt不能像2L所說的,使用microtime,因為時間在某些情況下不夠隨機,而且是可能被猜解的。
這裡推薦一個我用的加鹽HASH

$salt=base64_encode(mcrypt_create_iv(32,MCRYPT_DEV_RANDOM));$password=sha1($register_password.$salt);

解釋:
首先使用mcrypt,產生電腦隨機產生的,專門使用者加密的隨機數函數。
第二步,把得到的隨機數通過base64加密,使其變長並且不利於猜解。
第三步,把得出的鹽拼接到密碼的後面,再對其使用sha1進行雜湊
再把password存入到使用者的資料庫。

PS:為何不用靜態salt?沒有必要,使用一個動態隨機足夠長的鹽足矣。
為何不用MD5?因為長度不夠。
為何沒有使用多次HASH?因為這樣反而容易發生碰撞。
HASH好之後怎麼使用“醃制”好的密碼?
使用者註冊->提交密碼->產生salt->醃制好的密碼存入資料庫->salt存入資料庫。
使用者登入->提交密碼->調用salt接到提交密碼的後面->進行HASH->調用之前註冊醃制好的密碼->對比HASH值是否和這個密碼相同

最後推薦一篇文章,我是從中獲益的,希望LZ也有所收穫。
http://blog.jobbole.com/61872/

可以試試 phpass

對密碼進行雜湊相對安全的方法是使用bcrypt演算法。開源的phpass庫以一個便於使用的類來提供此功能。

這是我以前寫的一篇關於密碼加密的博文,歡迎參考。
http://www.wkii.org/save-user-password-use-bcrypt-or-pbkdf2.html

另外,請參考php5.5的內建函數
http://www.php.net/manual/zh/function.hash-pbkdf2.php

我寫的pbkdf2與php5.5的函數輸出結果一致。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.