Текущий архив: 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