簡體   English   中英

正確使用password_hash

[英]correct use of password_hash

我想弄清楚password_hash的正確用法我在下面有以下腳本

<?php
  $password = "test3";
  $hashAndSalt = password_hash($password, PASSWORD_BCRYPT);

  echo $hashAndSalt;
?>

據我所知,這也應該創造鹽?

當我運行腳本時,哈希的開頭以“$ 2y $ 10 $”開頭,其余的總是在每次運行時都會改變。

$2y$10$.YHHLeFYcQoE6c//vl587uIFTOljmpmuDnSA0w0dxo1Rrpvi5zM9m   <- run one
$2y$10$b6n3chpTQk1X7c0OdPp0ceZmw3GvZFsLx9FHq9RnYaJgbld915oYG   <- run two
$2y$10$AGffB7R1rTko8UmS1m6wT.ybG78.CkwrxqoRteNMeRPXexpSJW5iO   <- run three

它應該像這樣工作嗎? 這是在數據庫中存儲密碼的正確方法嗎?

$2y$10$.YHHLeFYcQoE6c//vl587uIFTOljmpmuDnSA0w0dxo1Rrpvi5zM9m
|  |  |                    |                               |
|  |  |                    |                               |
|  |  |                    |---------------------------------Hashed Password
|  |  |----------------------Salt
|  |----Cost
----Algorithm

哈希包含查看密碼是否與給定字符串的哈希匹配所需的所有信息。 你知道它所用的算法,鹽,以及它所散設的內容。 因此,您所要做的就是提供一個字符串,通過相同的算法傳遞相同的鹽和成本,它將與哈希相等。

所以回答你的問題,是的,它應該像那樣工作。 salt每次都會更改,這意味着每次都會更改散列密碼,但您始終可以檢查密碼是否哈希到相同的哈希密碼,因為哈希包含salt。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM