codecamp

PHP8 hash_init

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)

hash_init — 初始化增量散列运算上下文

说明

hash_init(
    string $algo,
    int $flags = 0,
    string $key = "",
    array $options = []
): HashContext

参数 

algo

要使用的散列算法名称,例如:“md5”、“sha256”、“haval160,4”等。如何获取受支持的算法清单,请参见 hash_algos()。

flags

进行散列运算的可选设置,目前仅支持一个选项:HASH_HMAC。当指定此选项的时候,必须指定 key 参数。

key

当 flags 参数为 HASH_HMAC 时,使用此参数传入进行 HMAC 散列运算时的共享密钥。

options

各种散列算法的一系列选项数组。目前 MurmurHash 算法仅支持 “seed” 参数。

返回值 

返回散列运算上下文对象,以供 hash_update()、hash_update_stream()、hash_update_file() 和 hash_final() 函数使用。

错误/异常 

如果 algo 未知或非加密散列函数,或者 key 为空时,抛出 ValueError 异常。

更新日志 

版本说明
8.1.0新增 options 参数。
8.0.0如果 algo 未知或非加密散列函数,或者 key 为空时,现在抛出 ValueError 异常。之前返回 false 并发出 E_WARNING 消息。
7.2.0当使用 HASH_HMAC 选项的时候,不再支持非加密的散列函数(adler32,crc32,crc32b,fnv132,fnv1a32,fnv164,fnv1a64,joaat)。
7.2.0返回 HashContext 对象,不再返回资源类型。

示例 

示例 #1 增量散列运算示例

<?php
$hash = hash('sha256', 'The quick brown fox jumped over the lazy dog.');

$ctx = hash_init('sha256');
hash_update($ctx, 'The quick brown fox ');
hash_update($ctx, 'jumped over the lazy dog.');
$incremental_hash = hash_final($ctx);

echo $incremental_hash, PHP_EOL;
var_dump($hash === $incremental_hash);
?>

以上示例会输出:

68b1282b91de2c054c36629cb8dd447f12f096d3e3c587978dc2248444633483
bool(true)

参见 

  • hash() - 生成散列值(消息摘要)
  • hash_algos() - 返回已注册的散列算法列表
  • hash_file() - 给指定文件的内容生成散列值
  • hash_hmac() - 使用 HMAC 方法生成带有密钥的散列值
  • hash_hmac_file() - 使用 HMAC 方法和给定文件的内容生成带密钥的散列值


PHP8 hash_hmac
PHP8 hash_pbkdf2
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PHP8 语言参考

PHP8 函数参考

PHP8 影响 PHP 行为的扩展

PHP8 Componere

PHP8 安装/配置

PHP8 外部函数接口

PHP8 选项和信息

PHP8 选项/信息 函数

PHP8 Windows Cache for PHP

PHP8 WinCache 函数

PHP8 Yac

PHP8 身份认证服务

PHP8 Radius 函数

PHP8 压缩与归档扩展

PHP8 Phar

PHP8 Zip

PHP8 ZipArchive 类

PHP8 加密扩展

PHP8 OpenSSL

PHP8 OpenSSL 函数

PHP8 Sodium 函数

PHP8 数据库扩展

PHP8 针对各数据库系统对应的扩展

PHP8 CUBRID 函数

PHP8 Firebird/InterBase

PHP8 Firebird/InterBase函数

PHP8 MongoDB介绍驱动程序体系结构和特殊功能

PHP8 MongoDB\Driver\Command 类

PHP8 MongoDB\Driver\Query 类

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }