1

Very similar to this question, I'm looking to calculate the MD5 hash of a string for use in an API.

According to this thread on Apple Discussions, this won't work on a device:

The CommonCrypto framework is not on the iPhone. Unfortunately, the iPhone Simulator compiles against Mac OS X frameworks so it'll work on the Simulator...but you won't get it to compile for the device.

Will code like this still run on the device ok?

#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]];        
}

What is the latest and best way to generate an MD5 hash on the device? How do you add CommonCrypto/CommonDigtest.h in XCode 4?

Thanks,

Community
  • 1
  • 1
barfoon
  • 27,481
  • 26
  • 92
  • 138

1 Answers1

5

Yes you can use CommonCrypto iniOS. I have an app in the APpStore that uses CommonCrypto.

More info to make the post more complete:

Just import headers such as

#import <CommonCrypto/CommonDigest.h>
#import <CommonCrypto/CommonHMAC.h>
#import <CommonCrypto/CommonCryptor.h>

and the framework: Security.framework

Here is an example using SHA1 with NSData, just pretty much replace it with MD5:

+ (NSData *)doSha1:(NSData *)dataIn
{
    NSMutableData *macOut = [NSMutableData dataWithLength:CC_SHA1_DIGEST_LENGTH];

    CC_SHA1( dataIn.bytes,
             dataIn.length,
             macOut.mutableBytes);

    return macOut;
}
zaph
  • 111,848
  • 21
  • 189
  • 228
  • please have a look on my question http://stackoverflow.com/questions/19031842/decrypt-value-from-blowfish-in-objective-c-code?noredirect=1#comment28178746_19031842 – QueueOverFlow Sep 28 '13 at 08:46