Decodificação Evernote / Thrift md5

A API Evernote fornece uma bodyHashpropriedade sobre os tipos de recursos. Essa propriedade é um NSDataobjeto, mas convertê-lo em uma string usando o costume [NSString stringWithData:]ou o costume do Evernote [data base64EncodedString]não funcionou. Depois de muito tempo pesquisando, descobri que este método funcionava:

+ (NSString *)evernoteBodyHashToMD5:(NSData*)data
{
NSMutableString *sb = [[NSMutableString alloc] init];
for (long i=0; i<[data length]; i++) {
UInt8 intVal = 0xff & *((UInt8*)[data bytes]+i);
[sb appendString: [NSString stringWithFormat:@"%02x", intVal]];
}
return [NSString stringWithString:sb];
}

Eu coloquei isso em uma categoria NSStringpor conveniência. Eu encontrei a implementação aqui