2011-12-13 9 views
7

quiero convertir una cadena corta a md5 hash, encontré varias publicaciones al respecto, pero nadie trabajó. es el ejemplo más simple que encontré. tengo este errorerror de "declaración implícita de función" en Objective-C

declaración implícita de la CC_MD5 función no está disponible en 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; 
} 

ACTUALIZACIÓN añadí import, que trabajan muy bien cuando llamo el método de la siguiente manera:

[self md5:@"admin"]; 

, obtengo el hash md5 correcto. Pero cuando hago esto

[self md5:userId]; 

consigo un error,

[NSDecimalNumber UTF8String]: Selector no reconocido enviado a la instancia 0x4d3e280 Pero ID de usuario no es decimal, que contiene el ID de Facebook, pero se declaró como NSString

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

Respuesta

25

Porque la declaración de CC_MD5 no se ha visto.

Incluir el marco de seguridad en su proyecto y

#import <CommonCrypto/CommonDigest.h> 
+0

gracias, funciona pero tengo un pequeño problema – user567

0

¿Está importando la interfaz correcta que define CC_MD5?

#import "CommonDigest.h" 
+0

Creo que probablemente quiera decir '' –

+0

Aún así funciona. Pero si quiere dar la ubicación completa, funciona igual que la mitad de SO ha mencionado –

3

Es necesario incluir el archivo CommonDigest Remate de cabeza de la biblioteca Crypto en la parte superior de su clase en la que se define la función MD5, así como incluir el Marco de Seguridad

#import <CommonCrypto/CommonDigest.h> 
Cuestiones relacionadas