iOS MD5加密实现方法

使用方法 先导入头文件 #import "MD5.h"

//md5测试
NSString * md1= [MD5 md5:@"123" ];
NSLog(@"32bit=%@",md1);
//16位MD5测试
NSString * md2=[MD5 getMd5_16Bit_String:@"123" isUppercase:YES];
NSLog(@"16bit=%@",md2);
//32位MD5测试
NSString * md3=[MD5 getMd5_32Bit_String:@"123" isUppercase:YES];
NSLog(@"32bit=%@",md3);

 

自建NSObject子类 命名MD5

MD5.h

#import <Foundation/Foundation.h>

@interface MD5: NSObject

+ (NSString *)md5:(NSString *)inPutText;

+ (NSString *)getMd5_32Bit_String:(NSString *)srcString isUppercase:(BOOL)isUppercase;

+ (NSString *)getMd5_16Bit_String:(NSString *)srcString isUppercase:(BOOL)isUppercase;

@end

MD5.m

#import "MD5.h"
#import <Foundation/Foundation.h>
#import <CommonCrypto/CommonDigest.h>

@implementation MD5

//字符串MD5加密
+ (NSString *)md5:(NSString *)inPutText
{
    const char *cStr = [inPutText UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5(cStr, strlen(cStr), result);
    return [[NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
             result[0], result[1], result[2], result[3],
             result[4], result[5], result[6], result[7],
             result[8], result[9], result[10], result[11],
             result[12], result[13], result[14], result[15]
             ] lowercaseString];
}

//32位MD5加密方式
+ (NSString *)getMd5_32Bit_String:(NSString *)srcString isUppercase:(BOOL)isUppercase{
    const char *cStr = [srcString UTF8String];
    unsigned char digest[CC_MD5_DIGEST_LENGTH];
    CC_MD5( cStr, strlen(cStr), digest );
    NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
        [result appendFormat:@"%02x", digest[i]];
    
    if (isUppercase) {
        return [result uppercaseString];
    }else{
        return result;
    }
}

//16位MD5加密方式
+ (NSString *)getMd5_16Bit_String:(NSString *)srcString isUppercase:(BOOL)isUppercase{
    //提取32位MD5散列的中间16位
    NSString *md5_32Bit_String=[self getMd5_32Bit_String:srcString isUppercase:NO];
    NSString *result = [[md5_32Bit_String substringToIndex:24] substringFromIndex:8];//即9~25位
    
    if (isUppercase) {
        return [result uppercaseString];
    }else{
        return result;
    }  
}

@end

 

posted @ 2015-12-23 16:20  death3721  阅读(273)  评论(0编辑  收藏  举报