IOS Md5封装类
来源:互联网 发布:知世公主 编辑:程序博客网 时间:2024/05/21 09:11
上代码
#import <Foundation/Foundation.h>@interface Md5Util : NSObject+(NSString *)enCode :(NSString*)password;//计算NSData 的MD5值+(NSString*)getMD5WithData:(NSData*)data;+(NSString*)getMD5WithFile:(NSString *)filePath;+(NSString *)UIImageToBase64:(UIImage *)image;+(NSString *)UIImageDataToBase64:(NSData *)imgData;@end
#import "Md5Util.h"#import<CommonCrypto/CommonDigest.h>@implementation Md5Util//对密码进行加密+(NSString *)enCode :(NSString*)password{ //1.首先将字符串转换成UTF-8编码, 因为MD5加密是基于C语言的,所以要先把字符串转化成C语言的字符串 const char *fooData = [password UTF8String]; //2.然后创建一个字符串数组,接收MD5的值 unsigned char result[CC_MD5_DIGEST_LENGTH]; //3.计算MD5的值, 这是官方封装好的加密方法:把我们输入的字符串转换成16进制的32位数,然后存储到result中 CC_MD5(fooData, (CC_LONG)password.length, result); /** 第一个参数:要加密的字符串 第二个参数: 获取要加密字符串的长度 第三个参数: 接收结果的数组 */ //4.创建一个字符串保存加密结果 NSMutableString *saveResult = [NSMutableString string]; //5.从result 数组中获取加密结果并放到 saveResult中 for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) { //小写x表示输出的是小写MD5,大写X表示输出的是大写MD5 [saveResult appendFormat:@"%02x", result[i]]; } /* x表示十六进制,%02X 意思是不足两位将用0补齐,如果多余两位则不影响 NSLog("%02X", 0x888); //888 NSLog("%02X", 0x4); //04 */ return saveResult;// unsigned char result[CC_MD5_DIGEST_LENGTH];// const char *sourceChar =[password UTF8String];// CC_MD5(sourceChar, (CC_LONG)password.length, result);//md5签名// d41d8cd98f00b204e9800998ecf8427e D41D8CD98F00B204E9800998ECF8427E// NSMutableString *signStr = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];// for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)// {// [signStr appendFormat:@"%02X", result[i]];// }// NSLog(@"signStr =%@",signStr);//// return signStr;}//对data进行加密 和获取的data对比是否相同 相同表示取数据完整+(NSString *)getMD5WithData:(NSData *)data{ const char* original_str = (const char *)[data bytes]; 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]; for(int i =0; i<CC_MD5_DIGEST_LENGTH;i++){ [outPutStr appendFormat:@"%02x",digist[i]];//小写x表示输出的是小写MD5,大写X表示输出的是大写MD5 } return [outPutStr lowercaseString];}+(NSString*)getMD5WithFile:(NSString *)filePath{ NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:filePath]; if( handle== nil ) { return nil; } CC_MD5_CTX md5; CC_MD5_Init(&md5); BOOL done = NO; while(!done) { NSData* fileData = [handle readDataOfLength: 256 ]; CC_MD5_Update(&md5, [fileData bytes], (CC_LONG)[fileData length]); if( [fileData length] == 0 ) done = YES; } unsigned char digest[CC_MD5_DIGEST_LENGTH]; CC_MD5_Final(digest, &md5); NSString* s = [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", digest[0], digest[1], digest[2], digest[3], digest[4], digest[5], digest[6], digest[7], digest[8], digest[9], digest[10], digest[11], digest[12], digest[13], digest[14], digest[15]]; return s;}+(NSString *)UIImageToBase64:(UIImage *)image{ NSData *imgData = UIImageJPEGRepresentation(image, 1.0f); NSString *encodedImgStr = [imgData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; return encodedImgStr;}+(NSString *)UIImageDataToBase64:(NSData *)imgData{ NSString *encodedImgStr = [imgData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; return encodedImgStr;}@end
上代码
[Md5Util enCode:str]
阅读全文
0 0
- IOS Md5封装类
- iOS--MD5加密封装
- MD5工具类封装
- VBS的MD5封装类
- C++ md5类,封装好
- Md5算法的C++封装类CMD5
- 封装好的C++ md5类
- IOS md5
- iOS MD5
- IOS MD5
- iOS MD5
- 根据别人的MD5源码封装的一个类
- 一个登录密码MD5加密的封装类代码共享
- 一个封装了MD5,SHA1等加密算法的类
- ★ 封装了MD5,SHA1等加密算法的类
- 封装了MD5,SHA1等加密算法的类
- iOS-MD5加密32位扩展类
- iOS-MD5加密32位扩展类
- POJ1002 487-3279【查表】(Bailian1002, Bailian2974)
- 爬虫综述
- JAVA数据类型及位运算符
- 中计播客 | iPhone X评测结果出炉 表现不如iPhone 8
- struts2启动tomcat的错误 Unable to load configuration.
- IOS Md5封装类
- devExpress图形生成公共类
- Java对象克隆
- vue脚手架的使用记录及目录文件解读
- JS正则表达式
- strcpy、strncpy与memcpy的区别与使用方法
- MapReduce 1 VS YARN
- A+B+·····问题
- 【NodeJS】浅析 exports 和 module.exports