Cocoaプログラム中でMD5値を計算する際には、CC_MD5という関数を使うことができます。Apple社で開発されたものですが、OpenSSLのMD5関数と互換になるように作られていて、以下のように簡単に使うことができます。
#import <CommonCrypto/CommonDigest.h> // CC_MD5 の宣言が含まれているヘッダファイル NSString *testString = @"Test"; // md5を計算したい文字列 const char *test_cstr = [testString UTF8String]; // C言語の文字列を取得する unsigned char md5_result[CC_MD5_DIGEST_LENGTH]; // MD5の計算結果を保持する領域 CC_MD5(test_cstr, strlen(test_cstr), md5_result); // MD5の計算を実行するMD5のハッシュ値を16進数で表現した文字列にする場合は、NSStringのstringWithFormat:メソッドが使えます。
NSString *hex_str = [NSString stringWithFormat: @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", md5_result[0], md5_result[1], md5_result[2], md5_result[3], md5_result[4], md5_result[5], md5_result[6], md5_result[7], md5_result[8], md5_result[9], md5_result[10], md5_result[11], md5_result[12], md5_result[13], md5_result[14], md5_result[15]]; NSLog(hex_str);16進数表現の文字列が正しいかどうか、PerlのDigest::MD5モジュールの結果と比較して調べました。
perl -MDigest::MD5=md5_hex -le 'print md5_hex("Test")'