溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

iOS網(wǎng)絡(luò)開(kāi)發(fā)(4)網(wǎng)絡(luò)數(shù)據(jù)加密

發(fā)布時(shí)間:2020-06-27 19:39:41 來(lái)源:網(wǎng)絡(luò) 閱讀:420 作者:ymanmeng123 欄目:移動(dòng)開(kāi)發(fā)
  • 數(shù)據(jù)存儲(chǔ)原則

任何應(yīng)用不能在本地直接存儲(chǔ)與安全相關(guān)的用戶信息

任何應(yīng)用不能向服務(wù)器傳輸與安全相關(guān)的而用戶信息


常用的加密算法:

     MD5:不可逆的算法,用一段數(shù)據(jù)每次加密后都是一樣的

     SHA-1:美國(guó)國(guó)家安全局設(shè)計(jì)并使用



  • MD5算法的實(shí)現(xiàn)

需要包含頭文件<CommonCrypto/CommonDigest.h>

步驟:

    1)將待加密OC字符串轉(zhuǎn)化為C語(yǔ)言字符串

    2)使用CC_MD5()函數(shù)將待加密C語(yǔ)言字符串加密,獲得加密后的數(shù)據(jù)

    3)將加密后的數(shù)據(jù),轉(zhuǎn)化為OC字符串

    注意:加密后的數(shù)據(jù),每一個(gè)字節(jié)的值以2位16進(jìn)制表示的字符串形式作為結(jié)果


通常將字符串加密的方法封裝在NSString的分類中,如:

@implementation NSString (MD5Coding)

- (NSSting*) MD5 {
    const char * cStr = self.UTF8String;
    unsigned char digest[CC_MD5_DIGEST_LENGTH];
    
    CC_MD5(cStr, strlen(cStr), digest);
    
    NSMutableString * result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH*2];
    for ( int i=0; i< CC_MD5_DIGEST_LENGTH; i++ ) {
        [result appendFormat:@"%02x", digest[i]];
    }
    return result;
}

@end


  • SHA-1算法加密

使用SHA-1算法加密的步驟和MD5基本類似,使用CC_SHA1()函數(shù)代替CC_MD5()函數(shù)

     

@implementation NSString (SHA1Coding)

- (NSSting*) SHA1 {
    const char * cStr = self.UTF8String;
    NSData * data = [NSData dataWithBytes:cStr length:self.length];
    unsigned char digest[CC_SHA1_DIGEST_LENGTH];
    
    CC_SHA1(data.bytes, data.length, digest);
    
    NSMutableString * result = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH*2];
    for ( int i=0; i< CC_SHA1_DIGEST_LENGTH; i++ ) {
        [result appendFormat:@"%02x", digest[i]];
    }
    return result;
}

@end


  • MD5的應(yīng)用

這兩種算法中,MD5應(yīng)用最為廣泛

1)本地存儲(chǔ)數(shù)據(jù)時(shí),如密碼等私密信息存儲(chǔ)在偏好設(shè)置中,存儲(chǔ)MD5加密后的

2)緩存文件(如圖片)存儲(chǔ)在緩存文件下,將對(duì)應(yīng)的URL進(jìn)行MD5加密后作為名字

...



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI