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 に答える