2012-12-14 7 views
9

ファイルのbtihハッシュを計算するために、私はRHashでC#を使用しています。現在、私はbtihハッシュを生成するために、3つのツールを使用してい :librhash-1.2.9-win DLL C#rhashはrhash.exeとutorrentと異なるハッシュを生成します

  • rhash-1.2.9-win32コマンドラインツール
    1. rhash-1.2.9-src\bindings\monoをuTorrentの

    問題は、すべてのツールが生成するということですfileの異なるbtih署名(写真は私が撮影したものでロイヤルフリーです):

    1: 2FF7858CC0A0B216C3676A807D619FA30101E45F 
    2: E6F07BB3C3B3B67531C84E3452980698AC1B0DAA A:\IMG_0400.JPG 
    3: D0B96839A14A8C45BB81AD157805AE73425998E5 
    

    C#のハッシュ生成では、私はHasher.GetHashForFile(f.Name, HashType.BTIH);rhash --bithをcmdツールで使用します。

    私は間違っていますか? btihを計算する別の方法はありますか?

  • +0

    正しいエンコードを使用してもよろしいですか?ファイルを読み込んで暗号化することによってコードを表示します – thumbmunkeys

    +0

    エンコーディング?これらはバイナリファイルです... rhashバインディングは簡単なFileStreamを使用します(https://github.com/rhash/RHash/blob/master/bindings/mono/Hasher.csのコード163と77を参照) – SimSimY

    +0

    ファイルを文字列に読み込んだ – thumbmunkeys

    答えて

    3

    最初の2つの違いは、ソースコードRHashによれば、BTIHハッシュは、追加データを正しく計算する必要があることです。

    初期BTIHハッシュ関数:

    calc_sums.cinit_btih_data機能がで文書化されています。他のアルゴリズムとは異なり、BTIH は正しい計算のためにより多くのデータを必要とします。 test_hashes.c

    BTIH例は実際USE_BTIH_WITH_TEST_FILENAMEが定義されているかどうかに応じて異なる方法で処理されます。

    init_btih_data(コマンドラインアプリケーションの実行時に呼び出されるように見える)関数は、さまざまなパラメータに応じて、rhash_trasmit関数を複数回呼び出します。少なくとも、それは2回呼び出されます。おそらく最初の2つの違いが説明されています。しかし、それは他の多くの時間と呼ぶことができます。私はuTorrentとの違いを説明していると思います。

    アンマネージドDLLがrhash_trasmit関数を公開していますが、.NETバインディングは機能しません。つまり、予想される追加データを提供できません。

    関連する問題