array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.sodium-crypto-pwhash-scryptsalsa208sha256.php', 1 => 'sodium_crypto_pwhash_scryptsalsa208sha256', ), 'up' => array ( 0 => 'ref.sodium.php', 1 => 'Sodium 関数', ), 'prev' => array ( 0 => 'function.sodium-crypto-pwhash-scryptsalsa208sha256-str.php', 1 => 'sodium_crypto_pwhash_scryptsalsa208sha256_str', ), 'next' => array ( 0 => 'function.sodium-crypto-pwhash-str-needs-rehash.php', 1 => 'sodium_crypto_pwhash_str_needs_rehash', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/sodium/functions/sodium-crypto-pwhash-scryptsalsa208sha256.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_pwhash_scryptsalsa208sha256 — scrypt を使い、パスワードからキーを導出する
$length
,$password
,$salt
,$opslimit
,$memlimit
sodium_crypto_pwhash() の scrypt 対応版です。
この特別な関数を使う理由は、 パスワードとソルトから、暗号化キーのシードを導出し、 そのシードを特定の目的に必要とされる実際のキー (たとえば sodium_crypto_sign_detached() で使う) を生成することです。
length
生成するパスワードハッシュの長さ。 バイト単位で指定します。
password
ハッシュを生成するパスワード
salt
ハッシュ化する前に、
パスワードに追加するソルト値。
この値は予測されてはいけません。
random_bytes()
のような良質な乱数のソースから生成されることが理想です。
そして、少なくとも長さが
SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES
バイトである必要があります。
opslimit
実際に行う計算処理の最大量。
この値を大きくすると、
キーを計算するのに必要なCPUサイクルが増加します。
意図した使い方次第で、
適切な値の上限値を設定するために、いくつかの定数が存在します。
弱いものから強いものへと並べると、以下のとおりです:
SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE
と SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE
です。
memlimit
この関数が使用するメモリの最大値をバイト単位で指定します。
適切な値を選ぶために、ヘルパとなる定数が存在します。
サイズの順に、以下の通りです:
SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE
と SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE
があります。
これらの値は、opslimit
と一致するものとペアになるべきです。
指定された長さのバイト列を文字列として返します。