在登录注册时,经常采用MD5加密技术对密码,也用于对敏感数据进行加密。本文简单介绍了iOS中MD5加密的使用方式。
- 简单的MD5加密
// passwordStr 为密码字符串
const char * myPassword = [passwordStr UTF8String];
unsigned char md5c[16];
CC_MD5(myPassword, (CC_LONG)strlen(myPassword), md5c);
NSMutableString *md5Str = [[NSMutableString alloc] initWithCapacity:100];
//md5c[1] -> 0x16;
for (int i = 0; i < 16; i++) {
[md5Str appendFormat:@"%02x",md5c[i]];
}
// md5Str 为加密后的密码
但是这个仅是简单加密后的MD5密码,容易被破解,破解方法可参照
MD5解密
- 复杂的MD5解密
针对于上面的问题,我们可以将上面的代码稍加修改
const char * myPassword = [passwordStr UTF8String];
unsigned char md5c[16];
CC_MD5(myPassword, (CC_LONG)strlen(myPassword), md5c);
NSMutableString *md5Str = [[NSMutableString alloc] initWithCapacity:100];
// md5c[1] -> 0x16;
[md5Str appendFormat:@"%02x",md5c[0]];
for (int i = 1; i < 16; i++) {
[md5Str appendFormat:@"%02x",md5c[i]^md5c[0]];
}
- 正常使用时我们可以定义一个
NSString
的分类,再需要时进行方便调用,在.m
文件中实现方法
- (NSString *)md5StrXor {
const char * myPassword = [self UTF8String];
unsigned char md5c[16];
CC_MD5(myPassword, (CC_LONG)strlen(myPassword), md5c);
NSMutableString *md5Str = [[NSMutableString alloc] initWithCapacity:100];
// md5c[1] -> 0x16;
[md5Str appendFormat:@"%02x",md5c[0]];
for (int i = 1; i < 16; i++) {
[md5Str appendFormat:@"%02x",md5c[i]^md5c[0]];
}
return [md5Str copy];
}
网友评论