2015-12-26 105 views
2

我是哈希密碼存儲新手。有人可以指出我可能做錯了什麼。我使用的是專門的PHP,而不是C或C在PHP中存儲哈希到密碼

的任何偏差存儲哈希:

  1. 接收密碼
  2. 它像sha-512的算法,以及成本因素髮送到password_hash()功能。
  3. 小卡在這裏。迭代時,我是否使用接收到的密碼哈希?
  4. 使用pbkdf2鍵偏差函數將其長度。
  5. 存儲在數據庫中。

檢索哈希:

  1. 獲取用戶的密碼在嘗試。
  2. 還卡在這裏,但我假設你使用password_verify函數。
  3. 如果一個匹配驗證其他拒絕。

如果有人可以發佈一個非常有用的正確解決方案。

+0

請問您可以發佈代碼。然後其他人可以很容易地理解你的問題。 –

+0

$ password = $ _POST ['password']; $ hash = password_hash(7,12,$ password); $ i = 0;而$ i <12800){$ hash = password_hash(7,12,$ hash);不知道如何實現hash_pbkdf2函數。 –

回答

2

如果您可以使用內置選項,那麼爲什麼還要使用while()循環呢?

$password = $_POST['password']; 
$hash = password_hash($password,PASSWORD_DEFAULT, array('cost' => 12)); 
echo $hash; 

這是正確的方法。要驗證密碼,您只需要執行以下操作。

if(password_verify($password, $hash)){ 
    //valid password 
} 
+0

我在password_hash函數中看不到內置循環。它是哪個參數? –

+0

成本是一個指數選項。如果我沒有記錯的話,2^11是默認值,這是現在足夠多的迭代。這需要〜100ms – Crecket