За последние 24 часа нас посетили 22602 программиста и 1152 робота. Сейчас ищут 639 программистов ...

Захэшировать видеофайл по кускам SHA256

Тема в разделе "PHP для новичков", создана пользователем Dark19, 22 май 2015.

  1. Dark19

    Dark19 Активный пользователь

    С нами с:
    10 май 2014
    Сообщения:
    51
    Симпатии:
    0
    Добрый день. Никак не могу сделать следующую задумку: есть видео, его нужно условно разбить на блоки по 1KB, вычислить хэш последнего блока и добавит его до предпоследнего блока, вычислить хэш предпоследнего блока вместе с хэшем последнего блока и так далее до первого блока. Вот схема: [​IMG]
    h - это хэш.
    Вот я пытался, но не особо получается:
    Код (Text):
    1. <?php
    2. $file="test.mp4";
    3. if(is_file($file))
    4. {
    5.     $handle = fopen($file,"r");
    6.     $sizebyte = sprintf("%u", filesize($file));
    7.     if($sizebyte < 1024)
    8.     {
    9.  
    10.         $sha256 = hash('sha256',$file);
    11.     }
    12.     else
    13.     {
    14.         $a=0;
    15.         for($i = 0; $a < $sizebyte; $i++){
    16.             $hash = fread($handle,1024*1024);
    17.             fseek($handle,-(1024*1024),SEEK_END);
    18.             $hash .= fread($handle,1024*1024);
    19.             $sha256[] = hash('sha256',$hash);
    20.             echo "\n hash is == ".$sha256[$i]."<br />";
    21.             $a+=1024*1024;
    22.         }
    23.     }
    24.     fclose($handle);
    25. }
    26. else
    27. {
    28.     echo "-not-is-file-";
    29. }
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Re: Захэшировать видеофайл по кускам

    А что не получается?
     
  3. Dark19

    Dark19 Активный пользователь

    С нами с:
    10 май 2014
    Сообщения:
    51
    Симпатии:
    0
    я не знаю как получить конкретный кусок и добавить в него хэш с предыдущего куска.
    fseek возвращает либо 0, либо 1, а не сам кусок
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    А что значит "добавить в него хэш с предыдущего куска"?
     
  5. Dark19

    Dark19 Активный пользователь

    С нами с:
    10 май 2014
    Сообщения:
    51
    Симпатии:
    0
    fopen читает файл как строку, мы делим этот файл на куски строк по байтово (по 1024 байта) и к каждому следующему куску с конца файла добавляем хэш предыдущего.

    Собственно мне интересно если загнать функцию fread в цикл, то она постоянно будет читать один и тот же кусок заданный байтами или же будет продолжать чтение с того места где закончила на предыдущей итерации?
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Я немного не по теме, но при чем тут PHP?..
     
  7. Dark19

    Dark19 Активный пользователь

    С нами с:
    10 май 2014
    Сообщения:
    51
    Симпатии:
    0
    потому что в php есть функция hash и я его немного знаю. С самим хэшированием проблем нет, есть проблемы с разбиением на куски и добавлением к ним хэша предыдущего куска
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Бинго!

    -Мужик, ты чего тут копаешься под фонарем?
    -Ключи потерял.
    -А где потерял?
    -Тут недалеко, за углом.
    -А почему ищешь не там, а тут, под фонарем?
    -А тут светлее.

    Си++ тебе в помощь, милчеловек. Каждому инструменту свое применение. PHP - это такой программируемый блокнот с поддержкой ООП. А функции хэширования в 95% языков есть.