热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS中使用的MD5与Base64(ObjectiveC)

一.MD5MD5数字校验NSString对象+(NSString*)md5EncodeFromStr:(NSString*)str{if(str.length0){returnni

一. MD5

MD5数字校验NSString对象

+ (NSString *)md5EncodeFromStr:(NSString *)str {
if (str.length == 0) {
return nil;
}
// 初始化C字符数组
const char* original_str = (const char *)[[str dataUsingEncoding:NSUTF8StringEncoding] bytes];
// 盛放数字校验的字符数组(长度为16bytes)
unsigned char digist[CC_MD5_DIGEST_LENGTH]; //CC_MD5_DIGEST_LENGTH = 16
CC_MD5(original_str, (uint)strlen(original_str), digist);
// NSMutableString* outPutStr = [NSMutableString stringWithCapacity:10];
NSMutableString* outPutStr = [NSMutableString new];
for(int i =0; i [outPutStr appendFormat:@"%02x",digist[i]];//小写x表示输出的是小写MD5,大写X表示输出的是大写MD5
}
NSLog(@"outPutStr=========%@",outPutStr);
return outPutStr;
}

MD5数字校验NSData对象

+ (NSString *)md5EncodeFromData:(NSData *)data {
if (!data) {
return nil;
}
//需要MD5变量并且初始化
CC_MD5_CTX md5;
CC_MD5_Init(&md5);
//开始加密(第一个参数:对md5变量去地址,要为该变量指向的内存空间计算好数据,第二个参数:需要计算的源数据,第三个参数:源数据的长度)
CC_MD5_Update(&md5, data.bytes, (CC_LONG)data.length);
//声明一个无符号的字符数组,用来盛放转换好的数据
unsigned char result[CC_MD5_DIGEST_LENGTH];
//将数据放入result数组
CC_MD5_Final(result, &md5);
//将result中的字符拼接为OC语言中的字符串,以便我们使用。
NSMutableString *resultString = [NSMutableString string];
for (int i = 0; i [resultString appendFormat:@"%02X",result[i]];
}
NSLog(@"resultString=========%@",resultString);
return resultString;
}

MD5数字加盐校验NSString对象

+ (NSString *)md5EncodeFromStr:(NSString *)str
withSalt:(NSString *)saltStr {
if (str.length == 0) {
return nil;
}
NSString *newStr = [str stringByAppendingString:saltStr];
// 初始化C字符数组
const char* original_str = (const char *)[[newStr dataUsingEncoding:NSUTF8StringEncoding] bytes];
// 盛放数字校验的字符数组(长度为16bytes)
unsigned char digist[CC_MD5_DIGEST_LENGTH]; //CC_MD5_DIGEST_LENGTH = 16
CC_MD5(original_str, (uint)strlen(original_str), digist);
// NSMutableString* outPutStr = [NSMutableString stringWithCapacity:10];
NSMutableString* outPutStr = [NSMutableString new];
for(int i =0; i [outPutStr appendFormat:@"%02X",digist[i]];//小写x表示输出的是小写MD5,大写X表示输出的是大写MD5
}
NSLog(@"outPutStr=========%@",outPutStr);
return outPutStr;
}

二. Base64加密

Base64 加密

#pragma mark -- Base64加密data数据
+ (NSString *)base64EncodeWithData:(NSData *)sourceData {
if (!sourceData) {
return nil;
}
NSString *resultStr = [sourceData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
return resultStr;
}

Base64 解密

#pragma mark -- Base64解密数据
+ (NSData *)base64DecodeWithString:(NSString *)sourceString {
if (!sourceString) {
return nil;
}
// 解密
NSData *resultData = [[NSData alloc] initWithBase64EncodedString:sourceString options:NSDataBase64DecodingIgnoreUnknownCharacters];
// NSLog(@"%@",resultData);
return resultData;
}

三. 源码地址

https://github.com/CarsonChen0312/Encryption-Demo.git


推荐阅读
author-avatar
手机用户2502863087
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有