sodium_crypto_pwhash_str
ASCII 文字でエンコードされたハッシュ値を得る
説明
string sodium_crypto_pwhash_str(#[\SensitiveParameter]string $password
, int $opslimit
, int $memlimit
)
パラメータ
-
password
-
ハッシュを生成するパスワードを文字列で指定します。
-
opslimit
-
実際に行う計算処理の最大量。
この値を大きくすると、
キーを計算するのに必要なCPUサイクルが増加します。
意図した使い方次第で、
適切な値の上限値を設定するために、いくつかの定数が存在します。
弱いものから強いものへと並べると、以下のとおりです:
SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE
,
SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE
,
SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE
です。
-
memlimit
-
この関数が使用するメモリの最大値をバイト単位で指定します。
適切な値を選ぶために、ヘルパとなる定数が存在します。
サイズの順に、以下の通りです:
SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
,
SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE
,
SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE
があります。
これらの値は、opslimit
と一致するものとペアになるべきです。
戻り値
ハッシュ化されたパスワードを返します。
同じパスワードから同じパスワードハッシュを生成するには、
opslimit
と
memlimit
の値を同じにしなければいけません。
これらは生成されたハッシュに埋め込まれているので、
ハッシュを検証する際に必要な全てが含まれています。
これによって、
sodium_crypto_pwhash_str_verify
関数が、他の引数に関する情報を追加で保存せずにハッシュを検証できるのです。
例
例1 sodium_crypto_pwhash_str の例
<?php
$password = 'password';
echo sodium_crypto_pwhash_str(
$password,
SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
);
$argon2id$v=19$m=65536,t=2,p=1$oWIfdaXwWwhVmovOBc2NAQ$EbsZ+JnZyyavkafS0hoc4HdaOB0ILWZESAZ7kVGa+Iw
注意
注意:
ハッシュ値は
Argon2ID アルゴリズムを使って計算されます。
このアルゴリズムは、GPU に対する攻撃と
サイドチャネル攻撃の両方に対する耐性を提供します。
password_hash と異なり、
salt の引数は存在せず(自動生成されます)、
opslimit
と
memlimit
の値が必須になっています。