函数名称: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() 函数完成哈希计算。