gpt4 book ai didi

C# rhash 生成不同于 rhash.exe 和 utorrent 的散列

转载 作者:太空狗 更新时间:2023-10-29 17:57:24 25 4
gpt4 key购买 nike

我正在使用 C# 和 RHash为了计算文件的 btih 哈希值。目前我正在使用 3 种工具来生成 btih 哈希:

  1. rhash-1.2.9-src\bindings\monolibrhash-1.2.9-win dll
  2. rhash-1.2.9-win32命令行工具
  3. uTorrent

问题是每个工具都会为相同的 file 生成不同的 btih 签名(照片是我拍的,免版税):

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

对于 C# 哈希生成,我在 cmd 工具中使用 Hasher.GetHashForFile(f.Name, HashType.BTIH);rhash --bith

我做错了什么?还有其他方法可以计算 btih 吗?

最佳答案

前两者的区别在于,根据 RHash 源代码,BTIH 哈希需要额外的数据才能正确计算。

calc_sums.c 中的 init_btih_data 函数记录在:

Initialize BTIH hash function. Unlike other algorithms BTIH requires more data for correct computation.

test_hashes.c 中,BTIH 示例实际上根据是否定义了 USE_BTIH_WITH_TEST_FILENAME 进行了不同的处理。

init_btih_data 函数(似乎只有在运行命令行应用程序时才会被调用)会根据各种参数依次调用 rhash_trasmit 函数多次。至少,它会调用它两次,这可能解释了前两者之间的区别。但是,它可以多次调用它,我认为这解释了我们在 uTorrent 中看到的差异。

困难在于,虽然非托管 DLL 公开了 rhash_trasmit 函数,但 .NET 绑定(bind)没有,这意味着无法提供预期的额外数据。

关于C# rhash 生成不同于 rhash.exe 和 utorrent 的散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13877638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com