ホームページ >バックエンド開発 >PHPチュートリアル >PHPのpassword_hash()の使用例_PHPチュートリアル

PHPのpassword_hash()の使用例_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:35:40804ブラウズ

1. はじめに
PHP5.5 は多くの新機能と API 関数を提供します。その 1 つはパスワード ハッシュ API (ハッシュ化されたパスワードの作成と検証) です。
これには、password_get_info()、password_hash()、password_needs_rehash()、password_verify() の 4 つの関数が含まれています。
PHP5.5 より前では、パスワード暗号化に md5 や sha1 などの暗号化方式を使用する場合があります (CSDN のようにプレーン テキストを保存する人はいません...)。
echo md5("123456"); など:
しかし、単純な md5 暗号化は辞書を突破するのが簡単です。md5 復号化 Web サイトを見つけるだけで元のパスワードを取得できます。
2. パスワードハッシュ API
php5.5 が提供するパスワードハッシュ API は、これらの問題をうまく解決できます。
まず、password_hash() 関数を見てみましょう:

コードをコピーします コードは次のとおりです:
string password_hash ( string $password , integer $algo [, array $options ])

これには 3 つありますパラメータ: パスワード、ハッシュ ハッシュ アルゴリズム、オプション。最初の 2 つの項目は必須です。
password_hash() を使用してハッシュ化されたパスワードを作成してみましょう:
コードをコピーします コードは次のとおりです:
$pwd = "123456";
$hash = password_hash($pwd, PASSWORD_DEFAULT);
echo $ hash;

上記の例の出力結果は次のようになります: $2y$10$4kAu4FNGuolmRmSSHgKEMe3DbG5pm3diikFkiAKNh.Sf1tPbB4uo2
そして、ハッシュ値はページが更新されると変化し続けます。
ハッシュ値が作成された後、password_verify() を使用して、パスワードがハッシュ値と一致するかどうかを検証できます:
コードをコピーします コードは次のとおりです:
boolean password_verify ( string $password , string $ハッシュ)

パスワードとハッシュ値の 2 つのパラメータを受け取り、ブール値を返します。以前に生成されたハッシュ値がパスワードと一致するかどうかを確認します:

コードをコピーします コードは次のとおりです:
if (password_verify($pwd,'$2y$10$4kAu4FNGuolmRmSSHgKEMe3DbG5pm3diikFkiAKNh.Sf1tPbB4uo2')) {

echo "パスワードが正しい";
} else {
echo "パスワードが間違っています";
}

基本的に、上記の 2 つの関数を使用してハッシュ パスワードを安全に作成および検証できます。他にも 2 つの API 関数があります:

コードをコピーします コードは次のとおりです:
password_get_info() //ハッシュ値関連の情報
password_needs_rehash() //ハッシュ値が特定のアルゴリズムとオプションを使用して作成されたかどうかを確認します

3. コメント
password_hash() で作成されたハッシュ化されたパスワードはより安全ですが、相互運用性が低下します。
php で md5 メソッドと標準の MD5 暗号化を使用する場合、node.js などの他の言語を通じて簡単に検証できます:
コードをコピーします コードは次のとおりです:
var hash = crypto .createHash( 'md5').update("123456").digest('hex');
if(hash == "e10adc3949ba59abbe56e057f20f883e") console.log('パスワードは正しい');

暗号化されたpassword_hash()を使用してくださいhash 値は基本的に PHP の passwd_verify を通じてのみ検証できます。
これら 2 つの方法には、それぞれ長所と短所があります。md5 (または sha1 など) + Salt (干渉文字列) を使用するか、password_hash() を使用するかは、特定の状況によって異なります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/742453.html技術記事 1. はじめに PHP5.5 は多くの新機能と API 関数を提供します。その 1 つがパスワード ハッシュ API (ハッシュ化されたパスワードの作成と検証) です。 これには、password_get_info()、password...
の 4 つの関数が含まれています。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。