-(NSString *)md5String
{
// 先转为UTF_8编码的字符串
const char *value = [self UTF8String];
// 设置一个接受字符数组
// md5加密后是128bit, 16 字节 * 8位/字节 = 128 位
unsigned char outputBuffer[CC_MD5_DIGEST_LENGTH];
// extern unsigned char *CC_MD5(const void *data, CC_LONG len, unsigned char *md)官方封装好的加密方法把str字符串转换成了32位的16进制数列(这个过程不可逆转) 存储到了outputBuffer这个空间中
CC_MD5(value, (CC_LONG)strlen(value), outputBuffer);
/*
x表示十六进制,%02X 意思是不足两位将用0补齐,如果多余两位则不影响
NSLog("%02X", 0x888); //888
NSLog("%02X", 0x4); //04
*/
NSMutableString *outputString = [[NSMutableString alloc] initWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
//将16字节的16进制转成32字节的16进制字符串
for(NSInteger count = 0; count < CC_MD5_DIGEST_LENGTH; count++){
[outputString appendFormat:@"%02x",outputBuffer[count]];
}
return outputString;
}
网友评论