美文网首页
iOS中使用的MD5与Base64 (Objective-C)

iOS中使用的MD5与Base64 (Objective-C)

作者: CarsonChen | 来源:发表于2017-03-20 13:59 被阅读1330次

一. MD5

MD5数字校验NSString对象

+ (NSString *)md5EncodeFromStr:(NSString *)str {
    if (str.length == 0) {
        return nil;
    }
    // 初始化C字符数组
    const char* original_str = (const char *)[[str dataUsingEncoding:NSUTF8StringEncoding] bytes];
    // 盛放数字校验的字符数组(长度为16bytes)
    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];
    NSMutableString* outPutStr = [NSMutableString new];
    for(int  i =0; i<CC_MD5_DIGEST_LENGTH;i++){
        [outPutStr appendFormat:@"%02x",digist[i]];//小写x表示输出的是小写MD5,大写X表示输出的是大写MD5
    }
    NSLog(@"outPutStr=========%@",outPutStr);
    return outPutStr;
}

MD5数字校验NSData对象

+ (NSString *)md5EncodeFromData:(NSData *)data {
    if (!data) {
        return nil;
    }
    //需要MD5变量并且初始化
    CC_MD5_CTX  md5;
    CC_MD5_Init(&md5);
    //开始加密(第一个参数:对md5变量去地址,要为该变量指向的内存空间计算好数据,第二个参数:需要计算的源数据,第三个参数:源数据的长度)
    CC_MD5_Update(&md5, data.bytes, (CC_LONG)data.length);
    //声明一个无符号的字符数组,用来盛放转换好的数据
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    //将数据放入result数组
    CC_MD5_Final(result, &md5);
    //将result中的字符拼接为OC语言中的字符串,以便我们使用。
    NSMutableString *resultString = [NSMutableString string];
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        [resultString appendFormat:@"%02X",result[i]];
    }
    NSLog(@"resultString=========%@",resultString);
    return resultString;
}

MD5数字加盐校验NSString对象

+ (NSString *)md5EncodeFromStr:(NSString *)str
                      withSalt:(NSString *)saltStr {
    if (str.length == 0) {
        return nil;
    }
    NSString *newStr = [str stringByAppendingString:saltStr];
    // 初始化C字符数组
    const char* original_str = (const char *)[[newStr dataUsingEncoding:NSUTF8StringEncoding] bytes];
    // 盛放数字校验的字符数组(长度为16bytes)
    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];
    NSMutableString* outPutStr = [NSMutableString new];
    for(int  i =0; i<CC_MD5_DIGEST_LENGTH;i++){
        [outPutStr appendFormat:@"%02X",digist[i]];//小写x表示输出的是小写MD5,大写X表示输出的是大写MD5
    }
    NSLog(@"outPutStr=========%@",outPutStr);
    return outPutStr;
}

二. Base64加密

Base64 加密

#pragma mark -- Base64加密data数据
+ (NSString *)base64EncodeWithData:(NSData *)sourceData {
    if (!sourceData) {
        return nil;
    }
    NSString *resultStr = [sourceData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
    return resultStr;
}

Base64 解密

#pragma mark -- Base64解密数据
+ (NSData *)base64DecodeWithString:(NSString *)sourceString {
    if (!sourceString) {
        return nil;
    }
    // 解密
    NSData *resultData = [[NSData alloc] initWithBase64EncodedString:sourceString options:NSDataBase64DecodingIgnoreUnknownCharacters];
    //    NSLog(@"%@",resultData);
    return resultData;
}

三. 源码地址

https://github.com/CarsonChen0312/Encryption-Demo.git

相关文章

  • iOS安全攻防

    参考iOS安全攻防(二十三):Objective-C代码混淆代码混淆 md5 + base64[ios]安全攻防之...

  • iOS之加密解密

    base64与md5 base64 : 公开的代码加密,url加密md5:用户密码存储 文件校验 base64 1...

  • iOS MD5,Base64,Des,SHA 相关加密和解密

    iOS MD5,Base64,Des,SHA 相关加密和解密 很简单的Demo,直接当做工具使用即可。 菜鸟走向大...

  • 两种加密方法

    base64和MD5加密 利用md5,和base64对应用中的敏感数据进行的加密和编码。 md5和base64的区...

  • iOS 数据加密

    iOS 常用加密方式算法包括MD5加密、AES加密、BASE64加密 MD5加密 MD5:全称是Message D...

  • iOS加密

    iOS代码常见的加密方式包括MD5加密、AES加密、BASE64加密,RSA加密。 MD5加密 MD5是不可逆的只...

  • base64和md5的区别

    Base64与MD5的区别: Base64和MD5都可用于做信息的简单加密,两者的简单差别如下: Base64 可...

  • Base64与MD5的区别

    Base64与MD5的区别 Base64和MD5都可用于做信息的简单加密,两者的简单差别如下: Base64: 1...

  • iOS中使用的MD5与Base64 (Objective-C)

    一. MD5 MD5数字校验NSString对象 MD5数字校验NSData对象 MD5数字加盐校验NSStrin...

  • iOS 关于加密

    常见的iOS代码加密常用加密方式包括Base64加密、MD5加密、AES加密、RSA加密等。 Base64加密 B...

网友评论

      本文标题:iOS中使用的MD5与Base64 (Objective-C)

      本文链接:https://www.haomeiwen.com/subject/heobnttx.html