如何在VB6中计算Torrent信息哈希

如何在VB6中计算Torrent信息哈希,vb6,bittorrent,Vb6,Bittorrent,我知道你必须计算torrent文件中info dict的SHA1, 我正在努力解析info dict,我是否需要在计算sha1哈希之前解码bencoded info dict 我该怎么做 信息哈希是信息字典的SHA-1哈希,采用bencoded格式 torrent文件包含meta info dictionary的bencoded表示,meta info dictionary又包含info dictionary 您必须获取文件的信息字典部分才能计算其哈希。假设您可以访问bencode编码器和解码器

我知道你必须计算torrent文件中info dict的SHA1, 我正在努力解析info dict,我是否需要在计算sha1哈希之前解码bencoded info dict

我该怎么做

信息哈希是信息字典的SHA-1哈希,采用bencoded格式

torrent文件包含meta info dictionary的bencoded表示,meta info dictionary又包含info dictionary

您必须获取文件的信息字典部分才能计算其哈希。假设您可以访问bencode编码器和解码器,您可以:

  • 解码整个文件
  • 把信息字典作为它的一部分
  • 重新编码以进行散列
在伪代码中:

metainfo = b_decode(contents_of("file.torrent"))
info = metainfo.getValue("info")
encoded_info = b_encode(info)
info_hash = sha1(encoded_info)
info散列是bencoded格式的info字典的SHA-1散列

torrent文件包含meta info dictionary的bencoded表示,meta info dictionary又包含info dictionary

您必须获取文件的信息字典部分才能计算其哈希。假设您可以访问bencode编码器和解码器,您可以:

  • 解码整个文件
  • 把信息字典作为它的一部分
  • 重新编码以进行散列
在伪代码中:

metainfo = b_decode(contents_of("file.torrent"))
info = metainfo.getValue("info")
encoded_info = b_encode(info)
info_hash = sha1(encoded_info)

在某些情况下,这是错误的,因为它会对未排序的信息dict进行排序,而当信息dict由于某种原因未排序时,约定的约定是按原样(未排序)散列信息dict。Arvid在这里描述了一种更安全的方法:在某些情况下,这是错误的,因为它会对未排序的信息dict进行排序,当信息dict由于某种原因未排序时,约定的约定是按原样(未排序)散列信息dict。Arvid在这里描述了一种更安全的方法: