Próba napisania funkcji NSString sha1, ale zwraca wartość NULL

Mam następującą funkcję Objective-C:

+(NSString *)stringToSha1:(NSString *)str{
    NSMutableData *dataToHash = [[NSMutableData alloc] init];
    [dataToHash appendData:[str dataUsingEncoding:NSUTF8StringEncoding]];

    unsigned char hashBytes[CC_SHA1_DIGEST_LENGTH];
    CC_SHA1([dataToHash bytes], [dataToHash length], hashBytes);
    NSData *encodedData = [NSData dataWithBytes:hashBytes length:CC_SHA1_DIGEST_LENGTH];
    [dataToHash release];
    NSString *encodedStr = [NSString stringWithUTF8String:[encodedData bytes]];
    //NSString *encodedStr = [[NSString alloc]  initWithBytes:[encodedData bytes]
    //                                            length:[encodedData length] encoding: NSUTF8StringEncoding];
    NSLog(@"String is %@", encodedStr);

    return encodedStr;

}

Próbuję zrobić NSString, a SHA1 go zakodować. Wydaje się, że ta część działa, myślę, że w miejscu, w którym się przewracam, można przekonwertować obiekt NSData z powrotem na czytelny ciąg. Jeśli używam kodowania UTF8, tracę wyraz, jeśli mówię ASCII, dostaję dziwne znaki. To, czego naprawdę chcę, to ciąg szesnastkowy, ale nie mam pojęcia, jak go uzyskać. To jest za pomocą iPhone 3.0 SDK.

W tej chwili jakikolwiek ciąg, który przekazuję, wraca NULL.

questionAnswers(4)

yourAnswerToTheQuestion