在Objective-C中Torrent文件SHA1哈希的问题



由于µTorrent的响应系统在通过磁铁链接或洪流文件发送时的不足,也就是说,完全缺乏重复洪流添加的消息,我试图在洪流文件发送之前从其获取哈希值,并将其与当前作业列表进行比较。我目前拥有的代码返回一个不正确的哈希值,我不知道为什么。这是我正在使用的代码。

我试图通过一个哈希值为"dc9202f98aea7420a2872655c8f7184401e2a9c8"的文件发送,这段代码每次运行时都会返回30个左右哈希值中的一个。

+ (NSString *) torrentHashFromFile:(NSData *)file
{
    NSString * retVal = @"";
    NSData * data = [BEncoding encodedDataFromObject:
                     [[BEncoding objectFromEncodedData:file] 
                      objectForKey:@"info"]];
    unsigned char hashBytes[CC_SHA1_DIGEST_LENGTH];
    if (CC_SHA1([data bytes], (unsigned)[data length], hashBytes))
    {
        NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
        for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)
        {
            [output appendFormat:@"%02x", hashBytes[i]];
        }
        retVal = output;
    }
    return retVal;
}

是什么让你认为BT info散列只是散列的SHA1 ?

引用BEP-0003:

info_hash
    The 20 byte sha1 hash of the bencoded form of the info value from the metainfo file. 
    Note that this is a substring of the metainfo file. 

相关内容

  • 没有找到相关文章

最新更新