2011-12-13 4 views
7

Я хочу преобразовать короткую строку в хэш-таблицу md5, я нашел несколько сообщений об этом, но никто не работал. Это самый простой пример, который я нашел. я эта ошибкаошибка «неявное объявление функции» в Objective-C

неявное объявление функции CC_MD5 является недействительным в C99

- (NSString *) md5:(NSString *) input 
{ 
const char *cStr = [input UTF8String]; 
unsigned char digest[16]; 
CC_MD5(cStr, strlen(cStr), digest); // This is the md5 call 

NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; 

for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) 
[output appendFormat:@"%02x", digest[i]]; 

return output; 
} 

UPDATE я добавил #import, он отлично работает, когда я вызвать метод как это:

[self md5:@"admin"]; 

, я получаю правильный хеш md5. Но когда я это сделать

[self md5:userId]; 

я получаю сообщение об ошибке,

[NSDecimalNumber UTF8String]: непризнанные селектор направил к экземпляру 0x4d3e280 Но идент не десятичную, он содержит facebook идентификатор, но он заявил, в NSString

NSString *userId; 
@property(retain,nonatomic) NSString *userId; 

ответ

25

Поскольку декларация CC_MD5 не была обнаружена.

Включить рамки безопасности в вашем проекте и

#import <CommonCrypto/CommonDigest.h> 
+0

спасибо, это работает, но у меня небольшая проблема – user567

0

вы импортирование правильного интерфейса, который определяет CC_MD5?

#import "CommonDigest.h" 
+0

Я думаю, вы, вероятно, имеете в виду '' –

+0

Он все еще работает. Но если вы хотите дать полное местоположение, то работает так же, как половина SO упомянула –

3

Вам необходимо включить файл CommonDigest заголовка из библиотеки Crypto в верхней части класса, где функция MD5 определяются, а также включают в себя рамку безопасности

#import <CommonCrypto/CommonDigest.h> 
Смежные вопросы