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