常用到的MD5加密

1,324 阅读1分钟

最近项目老遇到参数转化MD5拼接URL,直接上代码

#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface DNMD5Secret : NSObject
// MD5加密
/*
 *由于MD5加密是不可逆的,多用来进行验证*/
/** 32位小写 */
+ (NSString *)ym_MD5ForLower32Bate:(NSString *)strObj;
/** 32位大写 */
+ (NSString *)ym_MD5ForUpper32Bate:(NSString *)strObj;
/** 16为大写 */
+ (NSString *)ym_MD5ForUpper16Bate:(NSString *)strObj;
/** 16位小写 */
+ (NSString *)ym_MD5ForLower16Bate:(NSString *)strObj;
@end
NS_ASSUME_NONNULL_END


#import "DNMD5Secret.h"
#import <CommonCrypto/CommonDigest.h>

@implementation DNMD5Secret

/** 32位小写 */
+ (NSString *)ym_MD5ForLower32Bate:(NSString *)strObj {    
//要进行UTF8的转码    
    const char* input = [strObj UTF8String];    
    unsigned char result[CC_MD5_DIGEST_LENGTH];    
    CC_MD5(input, (CC_LONG)strlen(input), result);

    NSMutableString *digest = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];    
    for (NSInteger i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        [digest appendFormat:@"%02x", result[i]];    
    }
    return digest;
}

/** 32位大写 */
+ (NSString *)ym_MD5ForUpper32Bate:(NSString *)strObj {
    //要进行UTF8的转码    const char* input = [strObj UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5(input, (CC_LONG)strlen(input), result);
    NSMutableString *digest = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for (NSInteger i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        [digest appendFormat:@"%02X", result[i]];
    }
    return digest;
}

/** 16为大写 */
+ (NSString *)ym_MD5ForUpper16Bate:(NSString *)strObj {
       NSString *md5Str = [self ym_MD5ForUpper32Bate:strObj];
       NSString *string;
       for (int i=0; i<24; i++) {
           string=[md5Str substringWithRange:NSMakeRange(8, 16)];
       }
       return string;
}

/** 16位小写 */
+ (NSString *)ym_MD5ForLower16Bate:(NSString *)strObj {
    NSString *md5Str = [self ym_MD5ForLower32Bate:strObj];
    NSString *string;    for (int i=0; i<24; i++) {
        string=[md5Str substringWithRange:NSMakeRange(8, 16)];
    }
    return string;
}