2014-04-07 132 views
-1

我想聽聽如果這是足夠安全的密碼存儲在MySQL數據庫。sha512安全的密碼

<?php 
    $password=hash('sha512',$_POST['password']); 
    //and then insert it into and mysql database 
?> 

這是安全嗎?如果不是我怎麼能做到更安全?

+0

u使用PHP的版本?如果> = 5.5,你可以使用'password_hash'函數 – slier

+0

更好地使用Salt。 – Sablefoste

+2

使用[bcrypt](http://stackoverflow.com/questions/4795385/how-do-you-use-bcrypt-for-hashing-passwords-in-php) – kojiro

回答

0

基本的直線散列多年來一直沒有被認爲是安全的。多年來已經徹底破碎了md5。在6-8年前,鹽醃被認爲是最佳實踐,但現在它們不再被認爲是安全的。

請使用下列方法之一,以你的密碼安全加密:

  • bcrypt(谷歌聯繫,因爲PHP本身的方法是很新的和執行,這將取決於你的PHP版本而異) - 這將目前被認爲是行業標準的最佳實踐
  • pbkdf2(谷歌鏈接,基於與上述相同的原因) - 這是一個稍微不同於bcrypt的策略,通常被認爲較弱但可以調節,並且可能更容易實現,應該是考慮最低
  • scrypt(我沒有看過這個特定的模塊,但它是谷歌的最高結果) - scrypt具有某些特性,應該比bcrypt更安全,但它缺少一個關鍵的元素 - bcrypt具有悠久的歷史 - 嘗試並沒有打破它。

所有這些功能的關鍵在於它們的設計運行緩慢。特別是,傳統的哈希算法每秒可能運行數百萬次或數十億次,允許攻擊者在合理的時間內暴力破解密碼,這些函數可以調整爲每秒運行10次或兩次,或者一次,甚至需要幾秒鐘才能完成。你永遠不希望設置這些算法以這種方式運行,你可能想要調整它,以便在1秒到10秒內完成,這對用戶來說幾乎是不可察覺的,但仍然會使暴力強制不切實際。