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中得到它。任何帮助,将不胜感激。再说一次,所有的代码似乎都工作正常,直到这一点。安全框架对我来说仍然有点新鲜。
答案 0 :(得分:1)
实际上,我刚回答了自己的问题。使用SecEncodeTransformCreate(NULL,NULL)并通过它发送数据,我得到了校验和。问题解决了。
答案 1 :(得分:0)
将编码更改为可解码任何字节值的编码。例如NSISOLatin1StringEncoding
。这应该为您提供类似于openssl md5 -binary
的输出。
虽然结果不是很有意义......