C # rhash erzeugt andere Hashes als die rhash.exe und utorrent

9

Ich verwende C # mit RHash , um die bh-Hashwerte der Datei zu berechnen. Zur Zeit verwende ich 3 Tools, um den btih Hash zu generieren:

  1. rhash-1.2.9-src\bindings\mono mit librhash-1.2.9-win dll
  2. rhash-1.2.9-win32 Befehlszeilentool
  3. uTorrent

Das Problem ist, dass jedes Werkzeug verschiedene Btih-Signaturen für dieselbe Datei erzeugt (das Foto wurde erstellt) bei mir ist es königlich frei):

%Vor%

Für die C # Hash Erzeugung benutze ich Hasher.GetHashForFile(f.Name, HashType.BTIH); und rhash --bith im cmd Werkzeug.

Was mache ich falsch? Gibt es eine andere Möglichkeit, die btih zu berechnen?

    
SimSimY 14.12.2012, 11:18
quelle

1 Antwort

3

Der Unterschied zwischen den ersten beiden ist, dass gemäß dem RHash Quellcode BTIH Hashes zusätzliche Daten benötigt, um korrekt berechnet zu werden.

Die Funktion init_btih_data in calc_sums.c ist dokumentiert mit:

  

Initialisiere die BTIH-Hash-Funktion. Im Gegensatz zu anderen Algorithmen BTIH   benötigt mehr Daten für die korrekte Berechnung.

In test_hashes.c werden die BTIH -Beispiele tatsächlich unterschiedlich behandelt, abhängig davon, ob USE_BTIH_WITH_TEST_FILENAME definiert wurde.

Diese init_btih_data -Funktion (die scheinbar nur aufgerufen wird, wenn die Befehlszeilenanwendung ausgeführt wird) ruft wiederum die Funktion rhash_trasmit abhängig von verschiedenen Parametern mehrmals auf. Zumindest wird es zweimal aufgerufen, was wahrscheinlich den Unterschied zwischen den ersten beiden erklärt. Es kann jedoch eine Reihe von anderen Zeiten genannt werden, die, wie ich denke, den Unterschied erklären, den wir mit uTorrent sehen.

Die Schwierigkeit besteht darin, dass, während die nicht verwaltete DLL die rhash_trasmit -Funktion freigibt, die .NET-Bindungen dies nicht tun, was bedeutet, dass es nicht möglich ist, die zusätzlichen erwarteten Daten bereitzustellen.

    
nick_w 17.12.2012, 21:39
quelle

Tags und Links