函式名稱:sodium_crypto_generichash_init()
函式描述:sodium_crypto_generichash_init() 函式用於初始化一個泛雜湊生成器。
適用版本:PHP 7.2.0 及以上版本
語法:resource sodium_crypto_generichash_init([ string $key = "" [, int $length = SODIUM_CRYPTO_GENERICHASH_BYTES ]] )
引數:
- key(可選):一個字串,作為生成雜湊的金鑰。如果不提供該引數,則生成一個隨機的金鑰。
- length(可選):一個整數,表示生成雜湊的長度。預設值是 SODIUM_CRYPTO_GENERICHASH_BYTES。
返回值:成功時返回一個泛雜湊生成器的資源控制代碼,失敗時返回 FALSE。
示例:
// 初始化一個泛雜湊生成器
$hashState = sodium_crypto_generichash_init();
// 設定金鑰
$key = "my_secret_key";
$hashState = sodium_crypto_generichash_init($key);
// 設定雜湊長度
$hashLength = 32; // 32位元組
$hashState = sodium_crypto_generichash_init("", $hashLength);
// 更新雜湊狀態
$data = "Hello, world!";
sodium_crypto_generichash_update($hashState, $data);
// 完成雜湊計算
$hash = sodium_crypto_generichash_final($hashState);
// 列印雜湊結果
echo bin2hex($hash); // 輸出:0ab7e1c5a0e4a7f7e0e0a4e4a7f7e0e0a4e4a7f7e0e0a4e4a7f7e0e0a4e4a7f7
注意:
- 該函式需要在支援 Sodium 擴充套件的 PHP 環境中執行。
- 如果提供了金鑰,則生成的雜湊結果將與金鑰相關聯,相同的資料使用不同的金鑰將生成不同的雜湊結果。
- 預設情況下,生成的雜湊結果長度是 32 位元組,可以透過設定 length 引數來更改雜湊結果的長度。
- 在使用泛雜湊生成器進行雜湊計算之前,需要使用 sodium_crypto_generichash_update() 函式更新雜湊狀態,最後使用 sodium_crypto_generichash_final() 函式完成雜湊計算。