笔者遇到的问题:
iOS 两次加密后与android、c#两次md5加密得到的结果不一样。
一、iOS md5加密方法
1、将拿到的字符串进行utf_8编码
const char *cStr = [@“111” UTF8String];
2、开辟一个16进制字节数组
unsigned char firstResult[16];
3、调用系统api,三个参数分别代表字符串、字符串长度、开辟的字节数组
CC_MD5(cStr, (CC_LONG)strlen(cStr), firstResult);
4、将拿到的字节数组拼接
NSMutableString *Mstr = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH];
for (int i=0; i<CC_MD5_DIGEST_LENGTH; i++) {
[Mstr appendFormat:@"%02X",secondResult[i]];
}
二、修改后
const char *cStr = [self UTF8String];
unsigned char firstResult[16];
unsigned char secondResult[16];
//首次加密
CC_MD5(cStr, (CC_LONG)strlen(cStr), firstResult);
//二次加密
int firstLen = sizeof(firstResult);
CC_MD5(firstResult, firstLen, secondResult);
总结:
第二次加密是将第一次的到的字节数组进行加密。