使用方法 先导入头文件 #import "MD5.h"
//md5测试NSString * md1= [MD5 md5:@"123" ];NSLog(@"32bit=%@",md1);//16位MD5测试NSString * md2=[MD5 getMd5_16Bit_String:@"123" isUppercase:YES];NSLog(@"16bit=%@",md2);//32位MD5测试NSString * md3=[MD5 getMd5_32Bit_String:@"123" isUppercase:YES];NSLog(@"32bit=%@",md3);
自建NSObject子类 命名MD5
MD5.h
#import@interface MD5: NSObject+ (NSString *)md5:(NSString *)inPutText;+ (NSString *)getMd5_32Bit_String:(NSString *)srcString isUppercase:(BOOL)isUppercase;+ (NSString *)getMd5_16Bit_String:(NSString *)srcString isUppercase:(BOOL)isUppercase;@end
MD5.m
#import "MD5.h"#import#import @implementation MD5//字符串MD5加密+ (NSString *)md5:(NSString *)inPutText{ const char *cStr = [inPutText 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] ] lowercaseString];}//32位MD5加密方式+ (NSString *)getMd5_32Bit_String:(NSString *)srcString isUppercase:(BOOL)isUppercase{ const char *cStr = [srcString UTF8String]; unsigned char digest[CC_MD5_DIGEST_LENGTH]; CC_MD5( cStr, strlen(cStr), digest ); NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) [result appendFormat:@"%02x", digest[i]]; if (isUppercase) { return [result uppercaseString]; }else{ return result; }}//16位MD5加密方式+ (NSString *)getMd5_16Bit_String:(NSString *)srcString isUppercase:(BOOL)isUppercase{ //提取32位MD5散列的中间16位 NSString *md5_32Bit_String=[self getMd5_32Bit_String:srcString isUppercase:NO]; NSString *result = [[md5_32Bit_String substringToIndex:24] substringFromIndex:8];//即9~25位 if (isUppercase) { return [result uppercaseString]; }else{ return result; } }@end