MD5加密

作者: 一笔春秋 | 来源:发表于2019-06-28 17:09 被阅读0次
    • MD5
    +(NSString*)bigDataMd5:(NSData*)fileData
    {
        CC_MD5_CTX md5;
        
        CC_MD5_Init(&md5);
        
        CC_MD5_Update(&md5, [fileData bytes], (CC_LONG)[fileData length]);
        unsigned char digest[CC_MD5_DIGEST_LENGTH];
        CC_MD5_Final(digest, &md5);
        
        NSMutableString *saveResult = [NSMutableString string];
        // 5.从result 数组中获取加密结果并放到 saveResult中
        for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
            [saveResult appendFormat:@"%02x", digest[i]];
        }
        // x表示十六进制,%02X  意思是不足两位将用0补齐,如果多余两位则不影响
        return saveResult;
    }
    
    • base64 + MD5
    //base64+md5
    + (NSString *)dataToMD5:(NSData *)inputData {
        // 1.首先将字符串转换成UTF-8编码, 因为MD5加密是基于C语言的,所以要先把字符串转化成C语言的字符串
        const char *fooData = [[inputData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength] UTF8String];
        // 2.然后创建一个字符串数组,接收MD5的值
        unsigned char result[CC_MD5_DIGEST_LENGTH];
        // 3.计算MD5的值, 这是官方封装好的加密方法:把我们输入的字符串转换成16进制的32位数,然后存储到result中
        CC_MD5(fooData, (CC_LONG)strlen(fooData), result);
        /*
         第一个参数:要加密的字符串
         第二个参数: 获取要加密字符串的长度
         第三个参数: 接收结果的数组
         */
        // 4.创建一个字符串保存加密结果
        NSMutableString *saveResult = [NSMutableString string];
        // 5.从result 数组中获取加密结果并放到 saveResult中
        for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
            [saveResult appendFormat:@"%02x", result[i]];
        }
        // x表示十六进制,%02X  意思是不足两位将用0补齐,如果多余两位则不影响
        return saveResult;
        /*
         这里返回的是32位的加密字符串,有时我们需要的是16位的加密字符串,其实仔细观察即可发现,16位的加密字符串就是这个字符串中见的部分。我们只需要截取字符串即可([saveResult substringWithRange:NSMakeRange(7, 16)])
         */
    }
    

    相关文章

      网友评论

          本文标题:MD5加密

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