文字

hash_update

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

hash_update向活跃的哈希运算上下文中填充数据

说明

bool hash_update ( resource $context , string $data )

参数

context

hash_init() 函数返回的哈希运算上下文。

data

要向哈希摘要中追加的数据。

返回值

返回 TRUE

参见

  • hash_init() - 初始化增量哈希运算上下文
  • hash_update_file() - 从文件向活跃的哈希运算上下文中填充数据
  • hash_update_stream() - 从打开的流向活跃的哈希运算上下文中填充数据
  • hash_final() - 结束增量哈希,并且返回摘要结果

用户评论:

[#1] Dainichi [2006-07-24 18:19:26]

A simple example on incremental file hashing:

$fp = fopen($file, "r");
$ctx = hash_init('sha256');
while (!feof($fp)) {
    $buffer = fgets($fp, 65536);
    hash_update($ctx, $buffer);
}
$hash = hash_final($ctx, true);
fclose($fp);

While incremental hashing is quite slow, it's the easiest way to hash 
- parts of large files: I.e., a 700MB avi video uses first x bytes to store metadata, so in order to hash the avi's data only, you have to fseek to data start and use incremental hashing
- streaming data if php just proxies the data
- whenever it's inadequate or impossible to store the data being hashed into memory (i.e. because of their size) or on disc.

上一篇: 下一篇: