一個簡單的漸進式檔案雜湊範例
$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 只是代理資料,則串流資料
- 無法或不適合將要雜湊的資料儲存在記憶體(例如,因為它們的大小)或磁碟上的任何情況。