Вычисление TTH (Tiger tree hash)

Sokil.Dmytro

Новичок
если знаешь си идешь на офсайт качаешь сорцы стронга и там в папочке клиент есть файлы TigerHash.
 

SiMM

Новичок
А, кстати, зачем это всё? Если дело в том, что нужно показать TTH раздаваемых файлов - то у того же Strong'а проще всё достать из files.xml.bz2
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
mount
после твоего наезда на модераторов тебе тут никто уже не даст прямого ответа или решения
 

koreshs

Новичок
Уважаемые гуру, так что с библиотекой для вычисления TTH?
я скачал библиотеку http://kupershtokh.blogspot.ru/2007/12/on-phpclub.html а она выдает другой хэш чем стронг.
например файл Joomla_3.5.1-Stable-Full_Package.zip скаченный с офсайта и размером 11,26 Мб.
показывает echo TTH::getTTH( 'Joomla_3.5.1-Stable-Full_Package.zip');
DG7EJ5EZQHHTZDITWSPEY4DELAJYYMO46IJ3LMQ
а вот стронг показывает этот файл 4FQOTN2CNX4XESRJKFT7HABLJZ42RWQJG2I5HSA
в чем может быть проблема?
 

koreshs

Новичок
Кстати на сайте http://php.net/manual/ru/function.hash.php
написано что PHP с версии
"5.4.0 Алгоритм Tiger теперь использует порядок байтов от старшего к младшему (big-endian)."
Это связано с вычислением неправильного хэша?
 

koreshs

Новичок
О!, нашел, я сгенерировал хэш для PHP 5.3 и он совпал с хэшем стронга.
, потом поменял версию на PHP 5.6 и хэш стал абсолютно другим
.
Я так полагаю именно по этой причине тут ругань шла?!...
.
Может ктонибудь подскажет как скрипт адаптировать под новый PHP?
 

Вурдалак

Продвинутый новичок
Замени self::base32encode() на bin2hex(), сравни значения на 5.3 и 5.4. Возможно, tigerfix уже не нужен.
 

koreshs

Новичок
Замени self::base32encode() на bin2hex(), сравни значения на 5.3 и 5.4. Возможно, tigerfix уже не нужен.
нет не подходит совсем другой хэш получается ни на первый ни похож ни на второй.
.
на сайте http://php.net/manual/ru/function.hash.php написано что функция возвращает обратный порядок байтов.
поэтому я вставил в функцию tigerfix() после строки $my_split = str_split($binary_hash,8);
вот это $my_split=array_reverse($my_split);
к сожалению тоже не помогло.
.
:-|
 

koreshs

Новичок
Замени self::base32encode() на bin2hex(), сравни значения на 5.3 и 5.4. Возможно, tigerfix уже не нужен.
я ошибся не правильно понял что вы имели ввиду. но в общем то я заменил на bin2hex(). В обоих версиях значения одинаковые между собой но они НЕ совпадают с первыми(правильным стронговским и неправильным)
.
Может что еще другое реверснуть или я не правильно реверс делал?
 
Последнее редактирование:

koreshs

Новичок
УРААААААААААААА, нашел
нужно в функцие tigerfix()
закоментировать строку
//$my_split[$key] = strrev($value);
 

koreshs

Новичок
Замени self::base32encode() на bin2hex(), сравни значения на 5.3 и 5.4. Возможно, tigerfix уже не нужен.
Большое спасибо "Вурдалак" за помощь тебя как ГУРУ благодарю.
а вот у
Нежить повылазила...
совсем ни грамма нет ГУРУ духа. ему еще далековато совсем.
 

koreshs

Новичок
О, гуру-определитель, молю, скажи, гуру ли я?
О И ты великий Гуру :)
.
https://github.com/korenevskiy/PHP-TTH__Tiger-Hash-for-file
В общем я разместил код на github'е пусть люди попользуются.
А то 7 лет эта библиотека написанная тут ни кому не нужна была вообще, потому как с ошибками была.
 

Adelf

Administrator
Команда форума
PHP:
  /**
   * If PHP version 5.4 or hightest
   * then $php54 = true
   * else $php54 = false
   */
  public static $php54 = true;
Я где-то слышал, что можно как-то и самому определить это, а не заставлять пользователей.

Я уж молчу про composer в 2016 году...
 
Сверху