1.password_hash:建立密碼雜湊值
2.password_verify:用帳戶密碼的雜湊值驗證密碼
3.cost參數(默認為10),當值調整越大,所需耗費的計算時間就會越多,可以自行測試
4.你想要越安全cost數字就越大,這樣駭客破解就要以5、10年計算相對花費的成本就越高,但為了考慮使用者體驗和server的資源消耗上,所以數字必須設定適當的數字。
5.在使用時,需要搭配第二個參數,推薦直接使用 PASSWORD_DEFAULT
每次處理時,都會在背後產生隨機的SALT,
當然,也可以手動指定要使用哪一個SALT,但最好不要,就交給PASSWORD_DEFAULT來隨機處理,會更加安全
<?php
$password = 'PHPJQUERYGIT';//此為密碼
$passwordHash = password_hash(
$password,
PASSWORD_DEFAULT,
['cost' => 12]
);
echo $passwordHash ,'<br>';//密碼轉換出來的雜湊值
if (password_verify($password, $passwordHash)) {//打入的密碼與雜湊值驗證
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
?>
資料庫的用法
1.
$stmt->bindValue(':password', password_hash($_POST['password'], PASSWORD_BCRYPT));
$passwordHash = password_hash(
$_POST['password'],
PASSWORD_DEFAULT,
['cost' => 12]
);
$stmt->bindValue(':password', $passwordHash, PDO::PARAM_STR);//$passwordHash是字串,所以第三個參數為設定字串