NSString *curFourChanFilePath = [currentSubFile stringByAppendingPathComponent:curFourChanFile];
NSData *imageData = [NSData dataWithContentsOfFile:curFourChanFilePath];
CFErrorRef theError;
SecTransformRef testTransform = SecDigestTransformCreate(kSecDigestMD5,0,&theError);
CFDataRef theDataRef = (__bridge CFDataRef)imageData;
SecTransformSetAttribute(testTransform, kSecTransformInputAttributeName, theDataRef, &theError);
NSData *resultingData = (__bridge NSData *)(SecTransformExecute(testTransform, &theError));
NSString *resultingString = [[NSString alloc] initWithData:resultingData encoding:NSUTF8StringEncoding];
NSLog(@"%@",resultingString);
[checksumMapTable setObject:resultingData forKey:curFourChanFile];
下面是我遇到的問題的代碼。這段代碼是嵌套的嵌套循環,並且所有代碼都能正常工作,直到將數據轉換爲NSString。 UTF8似乎有問題。所有的字符串變成(null),但奇怪的是,它不是(null)。當我將編碼更改爲UTF16或UTF32時,我得到文本。不可讀的文本,如你所期望的那樣,使用錯誤的編碼都是亂碼,但很明顯,我似乎無法用我認爲是正確的編碼UTF8來解決它。任何幫助,將不勝感激。再次重申,所有的代碼在這一點上似乎都能正常工作。安全框架對我來說還是一個新點子。無法從Mac OS X上的安全框架獲取MD5校驗和Mountain Lion
你想用這個字符串做什麼? MD5的結果是字節,而不是字符。這意味着你必須更加精確地考慮如何將這些字節轉換爲字符。 – kmkaplan
嗯,我試着按照Apple文檔中的例子。我正在嘗試獲取MD5校驗碼。我必須錯過一步。就像我說過的,我對安全框架和手動校驗總體來說是全新的。我的意思是由OpenSSL的MD5散列等東西輸出的密鑰。 –
OpenSSL可以輸出原始字節(默認),十六進制數字(-hex)或Base64編碼(-base64)數據。你想要什麼? – kmkaplan