iOS HmacSHA1加密 和 MD5 Base64加密 --iOS开发系列---项目中成长的知识五

项目中开发中需要对一些数据进行加密后和服务器验证是否是我们客户端发出的请求!

方案是服务器定的,使用HmacSHA1加密和MD5 Base64加密

加密过程比较复杂

1.获取格林威治时间

2.用base64编码对请求数据内容进行MD5值计算

3.设置请求格式

4.设置鉴权信息,需要对上面的3个内容以及请求的链接 进行HMacSHA1再次进行加密

 

加密过后把上面4步获得的值加入到http的请求头中,一并发送给服务器,服务器经过验证后,才返回给我们我们想要的信息

 

下面贴代码说明我们使用的两个加密

首先是Base 64 MD5加密

 1 //BASE 64 MD5加密
 2 
 3 + (NSString *)getMd5_32Bit_String:(NSString *)srcString{
 4     const char *cStr = [srcString UTF8String];
 5     unsigned char result[16];
 6     CC_MD5( cStr, strlen(cStr), result );
 7     NSData *data = [NSData dataWithBytes:result length:CC_MD5_DIGEST_LENGTH];
 8     data = [GTMBase64 encodeData:data];
 9     NSString * base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
10     return base64String;
11 }

 

 

其次是HmacSHA1加密

 

 1 //HmacSHA1加密
 2 +(NSString *)Base_HmacSha1:(NSString *)key data:(NSString *)data{
 3     const char *cKey  = [key cStringUsingEncoding:NSASCIIStringEncoding];
 4     const char *cData = [data cStringUsingEncoding:NSASCIIStringEncoding];
 5     //Sha256:
 6     // unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
 7     //CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
 8     
 9     //sha1
10     unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH];
11     CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
12     
13     NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC
14                                           length:sizeof(cHMAC)];
15 
16     //将加密结果进行一次BASE64编码。
17     NSString *hash = [HMAC base64EncodedStringWithOptions:0];
18     return hash;
19 }

 

 

Base64 需要用到一个库:GTMBase64

HmacSHA1加密需要用到的库是:CommonCryptor

转载于:https://www.cnblogs.com/WayneLiu/p/4925170.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值