Как вычислить хэш?


Как я могу вычислить хэш - торрент-файл с помощью PHP?

я использовал класс BEncoded и это сработало, однако, хотел знать, как это работает.

Author: Maniero, 2014-12-16

2 answers

Торрент-файл имеет структуру данных с двумя ключами более высоком уровне: announce - определение(s) tracker(s), которые будут использоваться для загрузки - info - содержащий имена файлов и их хэши, отношение (частей, я думаю, но не уверен). Для создания ссылки "магнит", использует-infohash именно хеш данных, закодированных info. Шрифт.

То есть, если вычислить эту infohash необходимо открыть файл торрент, интерпретировать их структуры и вычисления хэш соответствующей части (как я понимаю, чем приведенные выше, и не нужно декодирования всю структуру, но по-прежнему требуется , выделите ее в файле).

Нюанс в том, что, как infohash - хеш-структуры , закодированной, BencodeModel декодирует все, оказывается, было нужно кодировать снова соответствующей части, перед тем, как применить хеш:

  • Декодирует его и ловит в соответствующей части (info):

    $bencode = new BencodeModel();
    $data = $bencode->decode_file($form->fields['filename']->saved_file);
    $hash = $torrentmanager->create_hash($data['info']);
    
  • Re-кодирует и вычисляет хэш:

    function create_hash($info)
    {
        $bencode = new BencodeModel();
        return urlencode(sha1($bencode->encode($info)));
    }
    

Источник.

 7
Author: mgibsonbr, 2017-05-23 12:37:28

Имеет несколько форм в зависимости от цели.

Одним из наиболее распространенных является использование MD5. Это делается с помощью функции md5_file().

Вы Также можете использовать sha1_file() это медленнее, но дает результат немного лучше.

 1
Author: Maniero, 2014-12-16 20:56:13