PHP8 sodium_crypto_pwhash_str

2024-03-18 13:43 更新

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_pwhash_str — 獲取 ASCII 編碼的哈希值

說明

sodium_crypto_pwhash_str(string $password, int $opslimit, int $memlimit): string

使用 CPU 和內(nèi)存硬哈希算法以及隨機(jī)生成的 salt 以及內(nèi)存和 CPU 限制來生成適合密碼存儲的 ASCII 編碼哈希。

參數(shù) 

password

字符串;要為其生成哈希的密碼。

opslimit

表示要執(zhí)行的最大計算量。提高此數(shù)字將使函數(shù)需要更多的 CPU 周期來計算密鑰。有一些常量可用于根據(jù)預(yù)期用途將操作限制設(shè)置為適當(dāng)?shù)闹担磸?qiáng)度順序排列:SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE、SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE 和 SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE。

memlimit

函數(shù)將使用的最大 RAM 量(以字節(jié)為單位)。有一些常量可幫助您按大小順序選擇適當(dāng)?shù)闹担?strong>SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE、SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE 和 SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE。通常,這些值應(yīng)與匹配的 opslimit 值配對。

返回值 

返回經(jīng)過哈希處理的密碼。

為了從相同的密碼生成相同的密碼哈希,必須使用相同的值 for 和。這些都嵌入在生成的哈希中,因此 包括驗證哈希值所需的所有內(nèi)容。這允許 sodium_crypto_pwhash_str_verify() 函數(shù)來驗證沒有 其他參數(shù)需要單獨(dú)存儲。opslimitmemlimit

示例 

示例 #1 sodium_crypto_pwhash_str() example

<?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 和側(cè)信道攻擊的抵抗力。 與 password_hash() 函數(shù)相比, 沒有 salt 參數(shù)(自動生成 salt), 和 參數(shù)不是可選的。opslimitmemlimit

參見 

  • sodium_crypto_pwhash_str_verify() - 驗證密碼是否與哈希匹配
  • sodium_crypto_pwhash() - 使用 Argon2 從密碼中派生密鑰
  • Pasword_hash() - 巓建密碼的散列(hash)
  • password_verify() - 驗證密碼是否和散列值匹配
  • ? Libsodium Argon2 文檔


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號