Вы можете добиться этого, расширив NSString. Попробуйте это в вашем .h:
@interface NSString(MD5)
- (NSString *)generateMD5Hash
@end
, а в .m
- (NSString*)generateMD5Hash
{
const char *string = [self UTF8String];
unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];
CC_MD5(string, strlen(string), md5Buffer);
NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x",md5Buffer[i]];
return output;
}
вы можете реализовать это, сделав новыйкласс с именем NSString + MD5 и вставкой приведенного выше кода в соответствующие файлы (.h и .m)
РЕДАКТИРОВАТЬ: не забудьте импортировать
РЕДАКТИРОВАТЬ 2:
И для NSData;
@interface NSData(MD5)
- (NSString *)generateMD5Hash;
@end
ваш .m:
- (NSString *)generateMD5Hash
{
unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];
CC_MD5(self.bytes, (CC_LONG)self.length, md5Buffer);
NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x",md5Buffer[i]];
return output;
}
Обратите внимание, что значениевозвращается авто-релиз и может потребоваться сохранить получателем.
Надеюсь, это поможет.