雜湊演算法是一個單向函數。它可以将任何大小的資料轉化為定長的“指紋”,并且無法被反向計算
依賴性
crypt() 函數需支援 CRYPT_BLOWFISH
常量
PASSWORD_BCRYPT
PASSWORD_DEFAULT
函數
1、string password_hash($password, $algo[, $options = array()])
參數:
$password:密碼
$algo:雜湊演算法
$options:選項
功能:将一段密碼$password,通過雜湊演算法,将其轉換成一段複雜的哈希值字元串
$pwd = "123456";
$hash = password_hash($pwd, PASSWORD_DEFAULT);
echo $hash;
輸出類似:$2y$10$yA/6ibVYdlQ2NcgeQguDSen6zYealETVXa.g227EsHvlK2RI6etYi
且重新整理頁面該哈希值也會不斷的變化
2、bool password_verify($password, $hash)
$hash:哈希值
功能:校驗密碼是否和哈希值比對
$pwd = "123456";
$hash_pwd = password_hash($pwd,PASSWORD_DEFAULT);
$verify = password_verify($pwd, $hash_pwd);
var_dump($verify);
結果:如果該哈希值$hash_pwd是由$pwd通過password_hash函數生成的,那麼由password_verify函數來校檢的話,傳回的是TRUE;相反,則生成FALSE
3、boolean password_needs_rehash ( string
$hash
, integer
$algo
[, array
$options
] )
功能:檢驗該$hash是否還需要進行哈希轉換。如果,$hash是已經經過password_hash函數轉換生成的結果,則不需要再進行哈希轉換,password_needs_rehash函數傳回FALSE;相反,傳回TRUE
$pwd = "123456";
$hash_pwd = password_hash($pwd,PASSWORD_DEFAULT);
$needrehash1 = password_needs_rehash($pwd,PASSWORD_DEFAULT); //需要進行哈希轉換,傳回TRUE
$needrehash2 = password_needs_rehash($hash_pwd ,PASSWORD_BCRYPT); //不需要再進行哈希轉換,傳回FALSE
var_dump($needrehash);
4、array password_get_info($hash)
$hash:一個由password_hash函數建立的散列值(哈希值)。
功能:傳回有關哈希數組資訊
$pwd = "123456";
$hash_pwd = password_hash($pwd,PASSWORD_DEFAULT);
$hashinfo = password_get_info($hash_pwd);
var_dump($hashinfo);
例:
