Possible Duplicate:
MD5 algorithm in Objective C
I need to hash a string using the MD5 technique in cocoa. Any frameworks that are used must be able to be accessed on the iphone. please provide code if possible.
Possible Duplicate:
MD5 algorithm in Objective C
I need to hash a string using the MD5 technique in cocoa. Any frameworks that are used must be able to be accessed on the iphone. please provide code if possible.
Well, first off, MD5 isn't encryption. So if you're looking for encryption, you're looking in the wrong place.
But if you just want to hash something using MD5 on an iPhone, this should give you the information you need:
#import <CommonCrypto/CommonDigest.h>
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]
];
}
//…
NSString *digest = md5(@"test");
NSLog(@"MD5 TEST %@", digest);
(From Calculate MD5 on iPhone)
This is what I use. Credits go to Alistair McMillan.
#import <CommonCrypto/CommonDigest.h>
+ (NSString *) md5:(NSString *)str {
const char *cStr = [str UTF8String];
unsigned char result[16];
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]
];
}
NOTE #1: I didn't have to link to any libraries
NOTE #2: I couldn't find -lcrypto in the external framework list on the iphone, and this works without -lcrypto
MD5 is not encryption, it is a cryptographic hash function. It's a one-way function whose output is a 128-bit number. The fact that it is cryptographic means that it is a computationally hard problem that, given an MD5 hash output, compute a string whose MD5 is that value. So, MD5 can be used for data integrity checks, but not for encryption.