Q:

МД5 на Objective-C

Доброе время суток!
Подскажите пожалуйста как реализовать МД5 со строки на Obj-c?
Спасибо!

A:

#import <CommonCrypto/CommonDigest.h>

- 1 Вариант
//NSString+MD5.h
#import <Foundation/Foundation.h>

@interface NSString (MD5)

+ (NSString *)MD5:(NSString *)input;

@end

//NSString+MD5.m
#import "NSString+MD5.h"

@implementation NSString (MD5)

+ (NSString *)MD5:(NSString *)input {
    const char *cStr = [input UTF8String];
    unsigned char digest[CC_MD5_DIGEST_LENGTH];
    CC_MD5( cStr, strlen(cStr), digest );

    NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        [output appendFormat:@"%02x", digest[i]];
    }

    return  output;
}

@end

- 2 Вариант
//NSData+MD5.h
#import <Foundation/Foundation.h>

@interface NSData (MD5)

- (NSString *)MD5;

@end

//NSData+MD5.m
#import "NSData+MD5.h"

@implementation NSData (MD5)

- (NSString *)MD5 {
    unsigned char digest[CC_MD5_DIGEST_LENGTH];

    CC_MD5([self bytes], [self length], digest);

    NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        [output appendFormat:@"%02x",digest[i]];
    }

    return output;
}

@end

