导入头文件:
#import <CommonCrypto/CommonDigest.h>
/**************************************************
函数名称 : MD5TO32Lower
函数描述 : md5 32位加密(小写)
输入参数 : 无
输出参数 : 无
返回值 : NSString*
备注 : N/A
**************************************************/
+ (NSString *)MD5TO32Lower:(NSString *)mwstr
{
const char *cStr = [mwstr UTF8String];
unsigned char result[32];
CC_MD5( cStr, (CC_LONG)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]];
}
/**************************************************
函数名称 : MD5TO32Upper
函数描述 : md5 32位加密(大写)
输入参数 : 无
输出参数 : 无
返回值 : NSString*
备注 : N/A
**************************************************/
+ (NSString *)MD5TO32Upper:(NSString *)mwstr
{
const char *cStr = [mwstr UTF8String];
unsigned char result[32];
CC_MD5( cStr, (CC_LONG)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]];
}
/**************************************************
函数名称 : MD5TO16
函数描述 : md5 16位加密
输入参数 : 无
输出参数 : 无
返回值 : NSString*
备注 : N/A
**************************************************/
+(NSString *)MD5TO16Lower:(NSString *)mwstr
{
//先32位加密
NSString *str = [self MD5TO32Lower:mwstr];
//取中间16位
return [str substringWithRange:NSMakeRange(8, 16)];
}
/**************************************************
函数名称 : MD5TO16
函数描述 : md5 16位加密
输入参数 : 无
输出参数 : 无
返回值 : NSString*
备注 : N/A
**************************************************/
+(NSString *)MD5TO16Upper:(NSString *)mwstr
{
//先32位加密
NSString *str = [self MD5TO32Upper:mwstr];
//取中间16位
return [str substringWithRange:NSMakeRange(8, 16)];
}
Tip:
警告:Implicit conversion loses integer precision:'unsigned long' to 'CC_LONG' (aka 'unsigned int')
解决方案:
CC_MD5( cStr, strlen(cStr), result);
改成
CC_MD5( cStr, (CC_LONG)strlen(cStr), result);