2012-12-14 1 views
9

파일의 btih 해시를 계산하려면 RHash과 함께 C#을 사용하고 있습니다.C# rhash는 rhash.exe 및 utorrent와 다른 해시를 생성합니다.

  1. rhash-1.2.9-src\bindings\mono
  2. rhash-1.2.9-win32 명령 줄 도구는
  3. 이 uTorrent

이 문제는 모든 도구가 생성되는 DLL librhash-1.2.9-win와 다음 btih 해시를 생성하기 위해 현재 나는 3 도구를 사용하고 있습니다 file에 대한 다른 btih 서명 (사진은 나에게 가져간 것으로, 무료입니다) :

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

C# 해시 생성의 경우 cmd 도구에서 Hasher.GetHashForFile(f.Name, HashType.BTIH);rhash --bith을 사용합니다.

내가 뭘 잘못하고 있니? btih를 계산할 다른 방법이 있습니까?

+0

올바른 인코딩을 사용 하시겠습니까? 파일을 읽고 암호화하여 코드를 표시하십시오. – thumbmunkeys

+0

인코딩? 그것들은 바이너리 파일입니다 ... rhash 바인딩은 간단한 FileStream을 사용합니다 (https://github.com/rhash/RHash/blob/master/bindings/mono/Hasher.cs의 마술 코드 163과 77 참조) – SimSimY

+0

파일을 문자열로 읽었습니다. – thumbmunkeys

답변

3

첫 번째 두 가지의 차이점은 소스 코드 RHash에 따르면 BTIH 해시를 올바르게 계산하려면 추가 데이터가 필요하다는 것입니다.

초기화 BTIH 해쉬 함수 :

calc_sums.cinit_btih_data 기능과 함께 설명되어 있습니다. 다른 알고리즘과 달리 BTIH 은 올바른 계산을 위해 더 많은 데이터가 필요합니다. test_hashes.c에서

BTIH 예는 실제로 USE_BTIH_WITH_TEST_FILENAME가 정의되었는지 여부에 따라 다르게 처리된다.

해당 init_btih_data 함수는 (명령 줄 응용 프로그램을 실행할 때만 호출되는 것 같다) 차례로 다양한 매개 변수에 따라 rhash_trasmit 함수를 여러 번 호출합니다. 최소한 두 번 호출하면 처음 두 요소의 차이점이 설명됩니다. 그러나 다른 여러 차례로 부를 수 있습니다. UTorrent와의 차이점을 설명 할 수 있습니다.

관리되지 않는 DLL은 rhash_trasmit 함수를 노출하지만 .NET 바인딩은 제공되지 않으므로 예상되는 추가 데이터를 제공 할 수 없습니다.

관련 문제