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

Wicked

Новичок
сходил по ссылочкам, и за 1.5 часа написал то, что нужно.
При том, что до сегодняшнего дня я не пользовался ни функцией hash(), ни алгоритмом tiger, и понятия не имел, как устроен TTH.
Так что дерзай! Ты на верном пути!
 

Pigmeich

Новичок
рекомендую обратить внимание на 9-й пост сверху.
а также прошу тех, кто понятия не имеет как считается Tiger Tree Hashing, не писать не по делу.
mount
Ну если ты лучше меня знаешь как его считать, то что не посчитал?

Ну а если не считаешь, то все-таки удели внимание тому снипету из мануала.
 

kode

never knows best
Автор оригинала: mount
а на вопрос никто и не ответил.
Вы сами пробовали генерировать с помощью этих функций хэш для стронга?
Вы знаете как он считается?
уж поверьте мне, прежде чем писать здесь, все что писалось выше я уже давно изучил

-~{}~ 27.12.07 12:06:


а ты сам сходи по этим ссылочкам и посмотри, что они никакого отношения к делу не имеют, и с помощью этих функций хэш для Стронга не подсчитать, ибо считается он совсем по другому.
по крайней мере я слюной не брызгаю.
и не люблю когда те, кто понятия не имеет о чем речь, пытаются показать что они знатоки вопроса
Если такой умный то флаг в руки - пиши руками, спецификация - http://www.cs.technion.ac.il/~biham/Reports/Tiger/tiger/tiger.html , только имхо мартышкин труд... Или вперёд сорцы ДЦ клиентов разгребать.
 

Wicked

Новичок
Опубликовал классик на просторах интЫрнета, но топикстартеру за его плохое поведение даже ссылку давать не хочется - пусть погуглит :)
 

FractalizeR

Новичок
mount
В PHP Manual Extended Version есть такая запись:

Since it seems that the tiger hash bug has been labeled "bogus" here is a fix to give a correct result. I'm not a binary expert so if you come up with a better fix please let us know. Just do your MHASH_TIGER as normal then send the unaltered binary into tigerfix and you get a proper HEX return.
PHP:
function tigerfix ($binary_hash) {
    $my_split = str_split($binary_hash,8);
    $my_tiger ="";
    foreach($my_split as $key => $value) {
       $my_split[$key] = strrev($value);
       $my_tiger .= $my_split[$key];
    }
   $my_tiger_hex = bin2hex($my_tiger);
   return $my_tiger_hex;
}
Вы пробовали такой вариант?
 

Alexandre

PHPПенсионер
Wicked, т.е. у тебя получилось :), ТТН средствами пхп и который в StrongDC совпадают?

PS. тема заинтересовала с первого поста..
 

mount

Новичок
Автор оригинала: Wicked
сходил по ссылочкам, и за 1.5 часа написал то, что нужно.
При том, что до сегодняшнего дня я не пользовался ни функцией hash(), ни алгоритмом tiger, и понятия не имел, как устроен TTH.
Так что дерзай! Ты на верном пути!
я прошу прощения, но прочитав неоднократно приведенные ссылки, я так и не понял как получить хэш именно для Стронга.
Wicked, а у тебя полученный в итоге хэш для файла получился точно таким же значением которое выдала программа Стронг?
можно увидеть результат выполнения функции?

-~{}~ 27.12.07 19:04:

Автор оригинала: Pigmeich
mount
Ну если ты лучше меня знаешь как его считать, то что не посчитал?

Ну а если не считаешь, то все-таки удели внимание тому снипету из мануала.
Pigmeich, а ты знаешь ответ на мой вопрос?
можно узнать, в чем я не прав в своем примере?

-~{}~ 27.12.07 19:07:

Автор оригинала: FractalizeR
mount
В PHP Manual Extended Version есть такая запись:


Вы пробовали такой вариант?
нет, точно такого же не пробовал, но есть большие сомнения что это подойдет, судя по кодированию bin2hex, что противоречит документации по созданию хэша для Стронга.
 

Wicked

Новичок
Wicked, т.е. у тебя получилось , ТТН средствами пхп и который в StrongDC совпадают?
Wicked, а у тебя полученный в итоге хэш для файла получился точно таким же значением которое выдала программа Стронг?
да.
даже для 40метровых файлов.
 

mount

Новичок
Автор оригинала: Wicked
Попозже, потому что я хочу, чтобы mount сначала сам решил эту задачу.

mount

http://phpclub.ru/talk/showthread.php?s=&threadid=105090
я эту задачу решаю уже который день, и если мог бы решить сам, то не писал бы.
а по ссылке ответа на вопрос нет.
или полученный в результате генерации скрипта хэшь- какая-то тайна?
 

Wicked

Новичок
нет, не тайна. Тебе это что-то даст, если я тебе привету тестовый скрипт и его вывод? Пожалуйста...
PHP:
require_once("tth.php");

file_put_contents("tthtest1.txt", "");
print TTH::getTTH("tthtest1.txt")."\n";

file_put_contents("tthtest2.txt", "\0");
print TTH::getTTH("tthtest2.txt")."\n";

file_put_contents("tthtest3.txt", str_repeat("A", 1024));
print TTH::getTTH("tthtest3.txt")."\n";

file_put_contents("tthtest4.txt", str_repeat("A", 1025));
print TTH::getTTH("tthtest4.txt")."\n";

print TTH::getTTH("L1 - Area Map.rar")."\n"; // 64мб
Код:
LWPNACQDBZRYXW3VHJVCJ64QBZNGHOHHHZWCLNQ
VK54ZIEEVTWNAUI5D5RDFIL37LX2IQNSTAXFKSA
L66Q4YVNAFWVS23X2HJIRA5ZJ7WXR3F26RSASFA
PZMRYHGY6LTBEH63ZWAHDORHSYTLO4LEFUIKHWY
7MJMVZI325FKV6BPN3HYBAI76DCNKJMXDFYZN6A
StrongDC для этих файлов показывает абсолютно то же самое.
 

mount

Новичок
Автор оригинала: Wicked
нет, не тайна. Тебе это что-то даст, если я тебе привету тестовый скрипт и его вывод? Пожалуйста...
PHP:
require_once("tth.php");
StrongDC для этих файлов показывает абсолютно то же самое. [/QUOTE]
просто интересно было посмотреть.
а функции hash и mhash, о которых говорилось выше, принимали участие в этом скрипте?
или они все-таки не имеют никакого отношения?
 

Wicked

Новичок
принимали. обе. они, можно сказать, взаимозаменяемые.
а еще принимали участие функции tigerfix и base32.

Но кроме этого еще надо знать, как, собственно, вычисляется tth. И это далеко не опцию какую-нибудь при хэшировании задать.
 

mount

Новичок
его то я читал в первую очередь, но к сожалению мало что понял :(
 

Wicked

Новичок
Прочти еще раз. Сначала пункт 2, 2.1. Как сделаешь, у тебя должны будут заработать 3 первых теста из Appendix A. После этого читаешь 2.2, 2.3, 3.3 и делаешь, чтобы заработал последний тест. Всё.
 
Сверху