2
    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 来理解它。任何帮助,将不胜感激。再次重申,到目前为止,所有代码似乎都运行良好。安全框架对我来说还是有点新。

4

2 回答 2

1

实际上,我只是回答了我自己的问题。使用 SecEncodeTransformCreate(NULL, NULL) 并通过它发送数据,我得到了校验和。问题解决了。

于 2012-12-31T14:36:54.507 回答
0

将您的编码更改为可以解码任何字节值的编码。例如NSISOLatin1StringEncoding. 这应该会给你一个类似于 的输出openssl md5 -binary

并不是说结果会很有意义……</p>

于 2012-12-31T14:34:46.380 回答