最近项目老遇到参数转化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;
}