如何计算 info_hash参数? Aka对应于info dictionar的哈希值
来自官方规格:
info_hash 来自metainfo文件的信息值的bencoded形式的20字节sha1哈希。请注意,这是元信息文件的子字符串。 几乎肯定必须逃避这个值。
这是否意味着只需从元信息文件中获取子字符串并对代表性字节执行sha-1哈希?
....因为这是我试过12次但没有成功的意思我已经将得到的哈希与我应该最终得到的那个进行比较......并且它们有所不同.. +跟踪器响应是FAILURE,未知的torrent。 ..或某事
那么你如何计算info_hash?
答案 0 :(得分:4)
图元文件已经被编码了,所以我不明白你为什么再次编码它?
我终于使用Java代码了,这是我的代码:
byte metaData[]; //the raw .torrent file
int infoIdx = ?; //index of 'd' right after the "4:info" string
info_hash = SHAsum(Arrays.copyOfRange(metaData, infoIdx, metaData.length-1));
这假设'info'块是torrent文件中的最后一个块(错误?)
不要排序或类似的东西,只需使用原始torrent文件的子字符串。
适合我。
答案 1 :(得分:3)
对图元文件进行bdecode,然后它只是“sha1(bencode('element ['info']))”(即仅对信息字典进行编码,然后再哈希)。
答案 2 :(得分:-1)
访问https://gist.github.com/shxsun/9085646,这是一个python代码,解释了info_generate,祝你好运。