西海岸より

つらつらざつざつと

iPhoneでMD5

よく使うので備忘メモ。
NSDataのカテゴリで実装。
なお、利用するには、Security.frameworkをリンクする必要あり。

#import <Foundation/Foundation.h>

@interface NSData (MD5)

- (NSString *)MD5DigestString;

@end
#import "NSData+MD5.h"
#import <CommonCrypto/CommonCryptor.h>

@implementation NSData (MD5)

- (NSString *)MD5DigestString
{
  unsigned char digest[CC_MD5_DIGEST_LENGTH]; 
  CC_MD5([self bytes], [self length], digest);
  char md5cstring[CC_MD5_DIGEST_LENGTH*2];
  
  for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
    sprintf(md5cstring+i*2, "%02x", digest[i]);
  }
  
  return [NSString stringWithCString:md5cstring encoding:NSUTF8StringEncoding];
}

@end

参考:
http://stackoverflow.com/questions/652300/using-md5-hash-on-a-string-in-cocoa
http://stackoverflow.com/questions/6006743/how-to-get-md5-and-sha1-in-objective-c-iphone