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]
原创粉丝点击