定義と使用法
hash_pbkdf2 - PBKDF2鍵の生成が提供されるパスワードのエクスポート
バージョンのサポート
PHP4 | PHP5 | PHP7 |
---|---|---|
サポートしていません。 | V5.5.0 +のサポート | サポート |
7.2.0は、もはや非暗号化ハッシュ関数(Adler32チェック、CRC32、crc32b、fnv132、fnv1a32、fnv164、fnv1a64、joaat)をサポートしていません。
文法
hash_pbkdf2(文字列$ ALGO、文字列$パスワード、文字列$塩、INT $の繰り返し[、int型$長= 0 [、BOOL $のraw_output = FALSE]])
hash_pbkdf2() PBKDF2は、パスワードキーの導出を生成します
パラメータ
パラメータ | 必要 | 説明 |
---|---|---|
何か | それはあります | 例えば、使用するハッシュアルゴリズム名:「MD5」、「SHA256」 、「haval160,4」 というように。サポートされているアルゴリズムのリストを取得する方法を参照してください )(hash_algosを。 |
パスワード | それはあります | パスワードをエクスポートします。 |
塩 | それはあります | 「塩」を導出すると、ランダムな値を生成する必要があります。 |
イテレーション | それはあります | エクスポート時に実行される反復の回数。 |
長さ | ノー | データキー導出の長さ。raw_outputがtrueの場合、このパラメータは、データのバイト数でキーの長さを得ています。raw_outputがFALSEである場合、このパラメータは、2つの16進文字は、データの1つのバイトに対応するように、鍵導出データの2倍のバイト長です。0を渡すと、アルゴリズムの選択出力のフルサイズを使用します。 |
raw_output | ノー | TRUEに設定された出力生のバイナリデータは、出力がFALSE小文字の16進数の文字列に設定されています。 |
返却値
如果 raw_output 设置为 TRUE, 则返回原始二进制数据表示的信息摘要, 否则返回 16 进制小写字符串格式表示的信息摘要。
在以下情况下会产生 E_WARNING: 指定了未知的算法, iterations 小于等于 0, length 小于等于 0 或者 salt 过长(大于 INT_MAX - 4)。
示例
$password = "password"; $iterations = 1000; // 使用 openssl_random_pseudo_bytes(),random_bytes(),或者其他合适的随机数生成函数 // 来生成随机初始向量 $salt = openssl_random_pseudo_bytes(16, $cstrong); $hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 20); echo $hash;
为了安全起见,可以使用 PBKDF2 方法对密码明文进行哈希运算后再存储。 但是更好的方案是使用 password_hash() 函数 或者使用 CRYPT_BLOWFISH 算法调用 crypt() 函数。
相关页面
crypt() - 单向字符串散列
hash() - 生成哈希值 (消息摘要)
hash_algos() - 返回已注册的哈希算法列表
hash_init() - 初始化增量哈希运算上下文
hash_hmac() - 使用 HMAC 方法生成带有密钥的哈希值
hash_hmac_file() - 使用 HMAC 方法和给定文件的内容生成带密钥的哈希值
openssl_pbkdf2() - 生成一个 PKCS5 v2 PBKDF2 字符串