Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CommonCrypto is no longer part of the iPhone SDK - Where else can I easily get an MD5 function?

Tags:

iphone

md5

So as many of you may already know, CommonCrypto isn't included in the iPhone SDK anymore (as on 3.0).

Where else can I easily get hold of an MD5 function? Am I going to have to compile OpenSSL into my project just to get MD5??

A few clarifications:

  • This isn't for security
  • This is going to be used with an API that requires an MD5 digest of a string. I have no control over this API.

If I could use SHA256, I would. I'm all for moving forward, but I can't change the API.


Edit

It seems I was mistaken. CommonCrypto is still in the iPhone SDK, just not explicity as it used to be. I was looking for the libCrypto library to include in my project. I was unaware that you could include the CommonCrypto headers without linking against the library...

like image 707
Jasarien Avatar asked Dec 04 '09 14:12

Jasarien


1 Answers

Are you sure its not included? I have apps compiled on the device for 3.0 using the following code that works:

#import <CommonCrypto/CommonDigest.h>

#define CC_MD5_DIGEST_LENGTH 16   /* digest length in bytes */

- (NSString *)md5:(NSString *)str { 
    const char *cStr = [str UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH]; 
    CC_MD5(cStr, strlen(cStr), result); 
    return [NSString stringWithFormat: @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",         
            result[0], result[1], result[2], result[3],
            result[4], result[5], result[6], result[7],
            result[8], result[9], result[10], result[11],
            result[12], result[13], result[14], result[15]];    
}
like image 148
coneybeare Avatar answered Sep 20 '22 02:09

coneybeare