iOS中的網(wǎng)絡(luò)加密(HMac加密方法)

iOS開(kāi)發(fā)時(shí),為了防止匿名攻擊,服務(wù)器需要確保每個(gè)請(qǐng)求都是從被信任的客戶端發(fā)起的。所以我們?cè)诰W(wǎng)絡(luò)請(qǐng)求時(shí)需要對(duì)所有請(qǐng)求做一些加密處理,用于server端認(rèn)證。

這里是HMac加密方法,代碼如下:

+  (NSString *)HMacHashWithKey:(NSString *)key data:(NSString *)data{

    const char *cKey  = [key cStringUsingEncoding:NSASCIIStringEncoding];
    const char *cData = [data cStringUsingEncoding:NSASCIIStringEncoding];

 
    unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];

    //關(guān)鍵部分
    CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
    
    NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC
    length:sizeof(cHMAC)];

    //將加密結(jié)果進(jìn)行一次BASE64編碼。
    NSString *hash = [HMAC base64EncodedStringWithOptions:0];
    return hash;
}

其中被加密的字段data,我們可以設(shè)定一種特殊的生成方式。
加密的密匙key也可以和server端商定一致。

這種加密方式依賴于一個(gè)庫(kù)CommonCryptor.

將加密后的hash在發(fā)送請(qǐng)求時(shí)添加到請(qǐng)求的header中,server端通過(guò)同樣的加密算法得到的hash如果相同,那么就可以確認(rèn),請(qǐng)求是由可以信任的客戶端發(fā)起的,認(rèn)證過(guò)程由此也完成了。

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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