Добрый день. Никак не могу сделать следующую задумку: есть видео, его нужно условно разбить на блоки по 1KB, вычислить хэш последнего блока и добавит его до предпоследнего блока, вычислить хэш предпоследнего блока вместе с хэшем последнего блока и так далее до первого блока. Вот схема: h - это хэш. Вот я пытался, но не особо получается: Код (Text): <?php $file="test.mp4"; if(is_file($file)) { $handle = fopen($file,"r"); $sizebyte = sprintf("%u", filesize($file)); if($sizebyte < 1024) { $sha256 = hash('sha256',$file); } else { $a=0; for($i = 0; $a < $sizebyte; $i++){ $hash = fread($handle,1024*1024); fseek($handle,-(1024*1024),SEEK_END); $hash .= fread($handle,1024*1024); $sha256[] = hash('sha256',$hash); echo "\n hash is == ".$sha256[$i]."<br />"; $a+=1024*1024; } } fclose($handle); } else { echo "-not-is-file-"; }
я не знаю как получить конкретный кусок и добавить в него хэш с предыдущего куска. fseek возвращает либо 0, либо 1, а не сам кусок
fopen читает файл как строку, мы делим этот файл на куски строк по байтово (по 1024 байта) и к каждому следующему куску с конца файла добавляем хэш предыдущего. Собственно мне интересно если загнать функцию fread в цикл, то она постоянно будет читать один и тот же кусок заданный байтами или же будет продолжать чтение с того места где закончила на предыдущей итерации?
потому что в php есть функция hash и я его немного знаю. С самим хэшированием проблем нет, есть проблемы с разбиением на куски и добавлением к ним хэша предыдущего куска
Бинго! -Мужик, ты чего тут копаешься под фонарем? -Ключи потерял. -А где потерял? -Тут недалеко, за углом. -А почему ищешь не там, а тут, под фонарем? -А тут светлее. Си++ тебе в помощь, милчеловек. Каждому инструменту свое применение. PHP - это такой программируемый блокнот с поддержкой ООП. А функции хэширования в 95% языков есть.