PHP 密碼加密函式

PHP 密碼加密函式

為什麼需要加密

輸入帳號密碼這種事情每天都在做,可是你有沒有想過,到底密碼是以什麼樣子的形式再傳送的,如果你有一點資安想法的話應該不難想到,密碼這種東西不應該以明文來傳送的,如果你常看人說某某功能某某網站的密碼是以明文來傳送的那真的挺糟糕的。

加密方式

列出個人常用的加密方式

md5
sha1
或是使用 hash 也是可以

$srting='some text';

echo md5($srting);
echo sha1($srting);

echo hash('md5',$srting);
echo hash('sha1',$srting);

當然啦,如果你有看到文件,官方也建議你不要使用這些方式來加密密碼。

password_hash 就是我們今天的主角,使用方法很簡單。

必須注意你的 PHP 版本至少要 5.5.0

echo password_hash("mypassword", PASSWORD_DEFAULT);

如果你把加密的結果倒出來看的話,會發覺每次加密結果都不一樣,那這個樣子要怎麼確認我們輸入的密碼對不對呢?這個時候我們就必須使用驗證的函式。

password_verify

if (password_verify($yourpassword, $dbpassword)) {
    echo '密碼正確';
} else {
    echo '密碼錯誤';
}

如此一來,我們就可以驗證使用者輸入的密碼正不正確了。