Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.26;
Скачать: CL | DM;

Вниз

Контрольная сумма TTH   Найти похожие ветки 

 
Piter ©   (2006-02-02 23:17) [0]

Нужен алгоритм получения контрольной суммы файла, используемый в сетях Direct Connect. Он там носит название TTH.

Состоит из 39-ти шестнадцатеричных знаков. Для пустого файла равна:

LWPNACQDBZRYXW3VHJVCJ64QBZNGHOHHHZWCLNQ

Для текстового файла, содержащего: "1"

QMLU34VTTAIWJQM5RVN4RIQKRM2JWIFZQFDYY3Y

Для текстового файла, содержащего: "abc"

ASD4UJSEH5M47PDYB46KBTSQTSGDKLBHYXOMUIA

Наверняка алгоритм стандартный, нужно уметь получать эти контрольные суммы для файлов...


 
Piter ©   (2006-02-02 23:27) [1]

TTH расшифровывается как Tiger Tree Hashing

Может, это поможет...


 
GuAV ©   (2006-02-02 23:37) [2]

http://sourceforge.net/projects/dcdelphi/


> Может, это поможет...


 
Piter ©   (2006-02-02 23:39) [3]

GuAV ©   (02.02.06 23:37) [2]

придется рыться в клиенте этом :(


 
GuAV ©   (2006-02-02 23:43) [4]

Думаю где-то протокол полностью документирован, раз так много клиентов. Никогда этим не интересовался просто вспомнил про то что видел dcdelphi в одном обзоре клиентов.


 
GuAV ©   (2006-02-02 23:46) [5]

И думаю что ^C, ^V проче чем писать самому. ;)


 
Piter ©   (2006-02-02 23:49) [6]

GuAV ©   (02.02.06 23:46) [5]

посмотрел этот клиент. Судя по всему, он не поддерживает TTH.


 
homm ©   (2006-02-03 00:01) [7]

В CryptoLIB есть просто TIGER. Но он почему-то не дает приведеные в [0] результаты.


 
GuAV ©   (2006-02-03 00:09) [8]


> посмотрел этот клиент. Судя по всему, он не
> поддерживает TTH.

Сори. Не думал что бывают клиенты без TTH.
Вот сцылка на исходники клиента который я юзаю, там есть TTH но он на С++ http://ftp.berlios.de/pub/strongdc/rc10src.rar


 
GuAV ©   (2006-02-03 00:16) [9]

В [8] TigerHash в отделбных .h .cpp , вот объявление класса в .h . Т.е. думаю если ничего другого не будет, можно перевести.
class TigerHash {
public:
/** Hash size in bytes */
enum { HASH_SIZE = 24 };

TigerHash() : pos(0) {
 res[0]=_ULL(0x0123456789ABCDEF);
 res[1]=_ULL(0xFEDCBA9876543210);
 res[2]=_ULL(0xF096A5B4C3B2E187);
}

~TigerHash() {
}

/** Calculates the Tiger hash of the data. */
void update(const void* data, size_t len);
/** Call once all data has been processed. */
u_int8_t* finalize();

u_int8_t* getResult() { return (u_int8_t*) res; };
private:
enum { BLOCK_SIZE = 512/8 };
/** 512 bit blocks for the compress function */
u_int8_t tmp[512/8];
/** State / final hash value */
u_int64_t res[3];
/** Total number of bytes compressed */
u_int64_t pos;
/** S boxes */
static u_int64_t table[];

void tigerCompress(const u_int64_t* data, u_int64_t state[3]);
};


 
Piter ©   (2006-02-03 00:44) [10]

homm ©   (03.02.06 0:01) [7]
В CryptoLIB есть просто TIGER. Но он почему-то не дает приведеные в [0] результаты


жаль :(

GuAV ©   (03.02.06 0:09) [8]
Сори. Не думал что бывают клиенты без TTH


в протоколе DC вообще нету TTH, его студенты писали.
Это уже потом стали добавлять TTH в клиенты, фактически sDC определяет курс развития протокола постоянно. То одну фишку введут, то другую.

В большинстве линуховых клиентов никаких TTH нету.

GuAV ©   (03.02.06 0:09) [8]
Вот сцылка на исходники клиента


я тоже уже нашел нечто похожее, но из линухового клиента. Выложил сюда: http://webfile.ru/788711

Ссылка на сайт этого алгоритма: http://www.cs.technion.ac.il/~biham/Reports/Tiger/

Но при моем незнании C, я перевести не смогу :(


 
Piter ©   (2006-02-03 00:52) [11]

GuAV ©   (03.02.06 0:16) [9]

в твоем случае вообще в виде класса, так наверное еще лучше.

Выложил сюда: http://webfile.ru/788726


 
Yanis ©   (2006-02-03 00:59) [12]

Там тоже немного есть об этом http://newage.gcnet.ru/index.php?showtopic=8611


 
GuAV ©   (2006-02-03 01:19) [13]

А что ты вообще такое пишешь, может и мне полезно будет ?


 
GuAV ©   (2006-02-03 01:23) [14]


> Но при моем незнании C, я перевести не смогу :(

Мож скомпилить то что на С без ++ в obj файл, потом прилинковать через $LINK и объявить нужную процедуру черрез external ?


 
Piter ©   (2006-02-03 02:41) [15]

GuAV ©   (03.02.06 1:19) [13]
А что ты вообще такое пишешь, может и мне полезно будет ?


программу для автоматического формирования листа magnet-ссылок для сети Direct Connect

GuAV ©   (03.02.06 1:23) [14]
Мож скомпилить то что на С без ++ в obj файл, потом прилинковать через $LINK и объявить нужную процедуру черрез external ?


ага, я так и делал для bz2 формата! Но у меня были уже нужные obj.

Если кто бы смог на CBuilder скомпилить в OBJ - был бы очень признателен!


 
Piter ©   (2006-02-03 13:47) [16]

эх, может кто скомпилит таки?


 
GuAV ©   (2006-02-03 14:54) [17]

Есть консольная утилита, считающая TTH для файла. http://wallie.selwerd.nl/source/tthsum/tthsum-1.1.0-win32-bin.tar.gz и есть её исходники на C. Вывод совпадает с [0].


 
Piter ©   (2006-02-03 16:23) [18]

GuAV ©   (03.02.06 14:54) [17]

Спасибо большое! Думаю, самое простое - булу ее вызывать и считывать результаты из консоли...



Страницы: 1 вся ветка

Текущий архив: 2006.02.26;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.048 c
15-1139114134
HTML
2006-02-05 07:35
2006.02.26
Рисунок в ячейке


1-1138268273
BFG9k
2006-01-26 12:37
2006.02.26
Много HELP файлов в одном проекте


2-1139620367
Ламерище
2006-02-11 04:12
2006.02.26
Отправить файл на мыло


9-1125230806
Kobik
2005-08-28 16:06
2006.02.26
PR25 (пока без названия) - оцените и посоветуйте


4-1134166676
Volf_555
2005-12-10 01:17
2006.02.26
Ошибка при получинии первых восьми символов строки