美文网首页iOS开发iOS干货
iOS中的网络加密(HMac加密方法)

iOS中的网络加密(HMac加密方法)

作者: WestMiss | 来源:发表于2017-02-08 23:04 被阅读566次

    iOS开发时,为了防止匿名攻击,服务器需要确保每个请求都是从被信任的客户端发起的。所以我们在网络请求时需要对所有请求做一些加密处理,用于server端认证。

    这里是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];
    
        //关键部分
        CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
        
        NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC
        length:sizeof(cHMAC)];
    
        //将加密结果进行一次BASE64编码。
        NSString *hash = [HMAC base64EncodedStringWithOptions:0];
        return hash;
    }
    

    其中被加密的字段data,我们可以设定一种特殊的生成方式。
    加密的密匙key也可以和server端商定一致。

    这种加密方式依赖于一个库CommonCryptor.

    将加密后的hash在发送请求时添加到请求的header中,server端通过同样的加密算法得到的hash如果相同,那么就可以确认,请求是由可以信任的客户端发起的,认证过程由此也完成了。

    相关文章

      网友评论

        本文标题:iOS中的网络加密(HMac加密方法)

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