hash_pbkdf2
(PHP 5 >= 5.5.0)
hash_pbkdf2 — PBKDF2 を使ってパスワードからキーを生成する
説明
$algo
, string $password
, string $salt
, int $iterations
[, int $length = 0
[, bool $raw_output = false
]] )パラメータ
-
algo -
ハッシュアルゴリズムの名前 (たとえば md5, sha256, haval160,4 など)。サポートされるアルゴリズムの一覧は hash_algos() をご参照ください。
-
password -
派生に使うパスワード
-
salt -
派生に使うソルト
-
iterations -
派生の実行の際の内部の反復回数
-
length -
出力する派生キーの長さ。0 の場合、渡されたアルゴリズムの長さが使われます。
-
raw_output -
TRUEにセットされている場合、名前のバイナリデータが出力されます。FALSEの場合、小文字の16進数が出力されます。
返り値
小文字の16進数を含む文字列が返されます。raw_output が true の場合、派生キーの生のバイナリ表現が返されます。
エラー / 例外
E_WARNING が発生するのはアルゴリズムが未知である場合、iterations パラメータが 0 以下である場合、length が 0 以下である場合、salt が長すぎる場合
(INT_MAX - 4 よりも大きい) です。
例
例1 hash_pbkdf2() の基本的な使い方の例
<?php
$password = "password";
$salt = "salt";
$hash = hash_pbkdf2("sha256", $password, $salt, 1, 20);
echo $hash;
?>
上の例の出力は以下となります。
120fb6cffcf8b32c43e7
注意
PBKDF2 による方法はパスワードのハッシュを保存するために使うことができます (NIST が認めた利用方法です)。
しかしながら、CRYPT_BLOWFISH のほうがパスワードの保存に適しており、 crypt() を通じて利用できることを記しておきます。
参考
- crypt() - 文字列の一方向のハッシュ化を行う
- hash() - ハッシュ値 (メッセージダイジェスト) を生成する
- hash_algos() - 登録されているハッシュアルゴリズムの一覧を返す
- hash_init() - 段階的なハッシュコンテキストを初期化する
- hash_hmac() - HMAC 方式を使用してハッシュ値を生成する
- hash_hmac_file() - HMAC 方式を使用して、指定されたファイルの内容からハッシュ値を生成する