iOS 32、16位md5加密

2019-05-14  本文已影响0人  CombatReadiness

MD5(MD5 Message-Digest Algorithm)

md5.jpg

md5自用代码

HKMD5Encryption.h

#import <Foundation/Foundation.h>

#pragma mark - MD5加密
@interface HKMD5Encryption : NSObject


/**
 md5加密区分32、16位与大小写

 @param str 需要md5加密的字符串
 @param bateNum 填32即32位md5,16或32之外的即16位md5
 @param isLowercaseStr YES即小写,NO即大写

 @return md5加密后的字符串
 */
+ (NSString *)md5EncryptStr:(NSString *)str bateNum:(NSInteger)bateNum isLowercaseStr:(BOOL)isLowercaseStr;

@end

HKMD5Encryption.m

#import "HKMD5Encryption.h"
#import <CommonCrypto/CommonCrypto.h>

@implementation HKMD5Encryption

+ (NSString *)md5EncryptStr:(NSString *)str bateNum:(NSInteger)bateNum isLowercaseStr:(BOOL)isLowercaseStr {
    NSString *md5Str = nil;
    const char *input = [str UTF8String];//UTF8转码
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5(input, (CC_LONG)strlen(input), result);
    NSMutableString *digestStr = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];//直接先获取32位md5字符串,16位是通过它演化而来
    for (NSInteger i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        [digestStr appendFormat:isLowercaseStr ? @"%02x" : @"%02X", result[i]];//%02x即小写,%02X即大写
    }
    if (bateNum == 32) {
        md5Str = digestStr;
    } else {
        md5Str = [digestStr substringWithRange:NSMakeRange(8, 16)];
    }
    return md5Str;
}

@end

使用

    NSLog(@"md5加密16位小写--%@",[HKMD5Encryption md5EncryptStr:@"123qaz" bateNum:16 isLowercaseStr:YES]);
    NSLog(@"md5加密16位大写--%@",[HKMD5Encryption md5EncryptStr:@"123qaz" bateNum:16 isLowercaseStr:NO]);
    NSLog(@"md5加密32位小写--%@",[HKMD5Encryption md5EncryptStr:@"123qaz" bateNum:32 isLowercaseStr:YES]);
    NSLog(@"md5加密32位大写--%@",[HKMD5Encryption md5EncryptStr:@"123qaz" bateNum:32 isLowercaseStr:NO]);
    NSLog(@"md5加盐32位小写--%@",[HKMD5Encryption md5EncryptStr:[[HKMD5Encryption md5EncryptStr:@"123qaz" bateNum:32 isLowercaseStr:YES] stringByAppendingString:@"hooyking"] bateNum:32 isLowercaseStr:YES]);

打印结果

md5加密16位小写--7e9a217cced2f8aa
md5加密16位大写--7E9A217CCED2F8AA
md5加密32位小写--ae005ceb7e9a217cced2f8aa354187c7
md5加密32位大写--AE005CEB7E9A217CCED2F8AA354187C7
md5加盐32位小写--170cf7465238c4f022dafd35eab3663c

可以自己将打印结果放入浏览器md5破解网站查看结果,简单的能破解,复杂的不容易破解,加盐更加难,所以现在开发中常采用md5加盐(加入随机字符串)再md5。

上一篇 下一篇

猜你喜欢

热点阅读