关于增量文件哈希的简单示例
$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);
虽然增量哈希相当慢,但它是在以下情况下哈希最简单的方法
- 大型文件的部分:例如,一个 700MB 的 avi 视频使用前 x 个字节存储元数据,因此为了仅哈希 avi 的数据,您必须使用 fseek 到数据开始并使用增量哈希
- 如果 php 只是代理数据,则流式传输数据
- 每当无法或无法将要哈希的数据存储到内存(例如,由于其大小)或磁盘上时。