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

一. MD5

MD5數(shù)字校驗(yàn)NSString對(duì)象

+ (NSString *)md5EncodeFromStr:(NSString *)str {
    if (str.length == 0) {
        return nil;
    }
    // 初始化C字符數(shù)組
    const char* original_str = (const char *)[[str dataUsingEncoding:NSUTF8StringEncoding] bytes];
    // 盛放數(shù)字校驗(yàn)的字符數(shù)組(長(zhǎng)度為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]];//小寫(xiě)x表示輸出的是小寫(xiě)MD5,大寫(xiě)X表示輸出的是大寫(xiě)MD5
    }
    NSLog(@"outPutStr=========%@",outPutStr);
    return outPutStr;
}

MD5數(shù)字校驗(yàn)NSData對(duì)象

+ (NSString *)md5EncodeFromData:(NSData *)data {
    if (!data) {
        return nil;
    }
    //需要MD5變量并且初始化
    CC_MD5_CTX  md5;
    CC_MD5_Init(&md5);
    //開(kāi)始加密(第一個(gè)參數(shù):對(duì)md5變量去地址,要為該變量指向的內(nèi)存空間計(jì)算好數(shù)據(jù),第二個(gè)參數(shù):需要計(jì)算的源數(shù)據(jù),第三個(gè)參數(shù):源數(shù)據(jù)的長(zhǎng)度)
    CC_MD5_Update(&md5, data.bytes, (CC_LONG)data.length);
    //聲明一個(gè)無(wú)符號(hào)的字符數(shù)組,用來(lái)盛放轉(zhuǎn)換好的數(shù)據(jù)
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    //將數(shù)據(jù)放入result數(shù)組
    CC_MD5_Final(result, &md5);
    //將result中的字符拼接為OC語(yǔ)言中的字符串,以便我們使用。
    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數(shù)字加鹽校驗(yàn)NSString對(duì)象

+ (NSString *)md5EncodeFromStr:(NSString *)str
                      withSalt:(NSString *)saltStr {
    if (str.length == 0) {
        return nil;
    }
    NSString *newStr = [str stringByAppendingString:saltStr];
    // 初始化C字符數(shù)組
    const char* original_str = (const char *)[[newStr dataUsingEncoding:NSUTF8StringEncoding] bytes];
    // 盛放數(shù)字校驗(yàn)的字符數(shù)組(長(zhǎng)度為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]];//小寫(xiě)x表示輸出的是小寫(xiě)MD5,大寫(xiě)X表示輸出的是大寫(xiě)MD5
    }
    NSLog(@"outPutStr=========%@",outPutStr);
    return outPutStr;
}

二. Base64加密

Base64 加密

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

Base64 解密

#pragma mark -- Base64解密數(shù)據(jù)
+ (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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容