1
마그넷 링크 또는 토런트 파일을 통해 전송할 때 μTorrent의 응답 시스템이 부적절하기 때문에 중복 토런트 추가에 대한 메시지가 완전히 나타나지 않습니다. Torrent 파일에서 해시를 가져 와서 현재 작업 목록과 비교하십시오. 내가 현재 가지고있는 코드가 잘못된 해시를 반환하고 나는 단서가 없다. 여기에 제가 사용하고있는 코드가 있습니다.Objective-C에서 토런트 파일의 SHA1 해시 문제
"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;
}
순진함, 대부분. 내가 다른 날 밤에 쓴 함수에 코드를 편집했다. 나 자신을 읽을 때 이상한 점은 더 이상 잘못된 해시를 반환하지 않는다는 것이다. 잘못된 해시 중 하나를 반환한다. 나는 도서관이 탓할 것이라고 생각한다. –
정확하게는 30 대가 아니라 24 명입니다. Bencode에서는 dict 키를 정렬해야합니다. – pyroscope
라이브러리는 정렬 된 사전 유형을 사용하지만, 화면에 인쇄 할 때 일부 숫자 대신 임의 문자가 표시됩니다. –