W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_pwhash — 使用 Argon2 從密碼中派生密鑰
sodium_crypto_pwhash(
int $length,
string $password,
string $salt,
int $opslimit,
int $memlimit,
int $algo = SODIUM_CRYPTO_PWHASH_ALG_DEFAULT
): string
此函數(shù)提供對 libsodium 的crypto_pwhash鍵派生函數(shù)的低級訪問。除非您有特定原因使用此函數(shù),否則應改用 sodium_crypto_pwhash_str() 或 password_hash() 函數(shù)。
使用此特定函數(shù)的一個常見原因是從密碼和 salt 派生加密密鑰的種子, 然后使用這些種子來生成用于某種目的的實際密鑰(例如sodium_crypto_sign_detached())。
length
整數(shù);要生成的密碼哈希的長度(以字節(jié)為單位)。
password
字符串;要為其生成哈希的密碼。
salt
在哈希之前添加到密碼中的鹽。鹽應該是不可預測的,理想情況下是從良好的隨機數(shù)源(如 random_bytes())生成的,并且長度正好為 SODIUM_CRYPTO_PWHASH_SALTBYTES
字節(jié)。
opslimit
表示要執(zhí)行的最大計算量。提高此數(shù)字將使函數(shù)需要更多的 CPU 周期來計算密鑰。有一些常量可用于根據(jù)預期用途將操作限制設置為適當?shù)闹?,按強度順序排列?strong>SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE
、SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE
和 SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE
。
memlimit
函數(shù)將使用的最大 RAM 量(以字節(jié)為單位)。有一些常量可幫助您按大小順序選擇適當?shù)闹担?strong>SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
、SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE
和 SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE
。通常,這些值應與匹配值配對。opslimit
algo
int指示要使用的哈希算法的數(shù)字。默認情況下SODIUM_CRYPTO_PWHASH_ALG_DEFAULT
(當前推薦的算法,可以從 libsodium 的一個版本更改為另一個版本),或顯式使用 SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13
,表示 Argon2id 算法版本 1.3。
返回派生的鍵。返回值是哈希的二進制字符串,而不是 ASCII 編碼的表示形式,并且不包含有關用于創(chuàng)建哈希的參數(shù)的其他信息,因此,如果將來要驗證密碼,則需要保留該信息。使用 sodium_crypto_pwhash_str() 來避免需要執(zhí)行所有這些操作。
示例 #1 sodium_crypto_pwhash() example
<?php
//Need to keep the salt if we're ever going to be able to check this password
$salt = random_bytes(SODIUM_CRYPTO_PWHASH_SALTBYTES);
//Using bin2hex to keep output readable
echo bin2hex(
sodium_crypto_pwhash(
16, // == 128 bits
'password',
$salt,
SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE,
SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13
)
);
?>
以上示例的輸出類似于:
a18f346ba57992eb7e4ae6abf3fd30ee
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: