Calculate a hash of a Stream
StreamInterface $stream Stream to calculate the hash for:
string $algo Hash algorithm (e.g. md5, crc32, etc):
bool $rawOutput Whether or not to use raw output:
bool|string Returns false on failure or a hash string on success
public static function getHash(StreamInterface $stream, $algo, $rawOutput = false) {
$pos = $stream
->ftell();
if (!$stream
->seek(0)) {
return false;
}
$ctx = hash_init($algo);
while ($data = $stream
->read(1024)) {
hash_update($ctx, $data);
}
$out = hash_final($ctx, (bool) $rawOutput);
$stream
->seek($pos);
return $out;
}