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

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

加密过程比较复杂

1.获取格林威治时间

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

3.设置请求格式

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

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

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

首先是Base 64 MD5加密

 //BASE 64 MD5加密

 + (NSString *)getMd5_32Bit_String:(NSString *)srcString{
const char *cStr = [srcString UTF8String];
unsigned char result[];
CC_MD5( cStr, strlen(cStr), result );
NSData *data = [NSData dataWithBytes:result length:CC_MD5_DIGEST_LENGTH];
data = [GTMBase64 encodeData:data];
NSString * base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
return base64String;
}

其次是HmacSHA1加密

 //HmacSHA1加密
+(NSString *)Base_HmacSha1:(NSString *)key data:(NSString *)data{
const char *cKey = [key cStringUsingEncoding:NSASCIIStringEncoding];
const char *cData = [data cStringUsingEncoding:NSASCIIStringEncoding];
//Sha256:
// unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
//CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC); //sha1
unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC); NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC
length:sizeof(cHMAC)]; //将加密结果进行一次BASE64编码。
NSString *hash = [HMAC base64EncodedStringWithOptions:];
return hash;
}

Base64 需要用到一个库:GTMBase64

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

最新文章

  1. Chrome 开发工具之Elements
  2. C#_技巧:真伪随机数
  3. CUTE-WRV2.1+TCP core(COM5402)的TCP带宽测试
  4. 【leetcode】 Unique Binary Search Trees (middle)☆
  5. Deep Learning(深度学习)学习笔记整理(二)
  6. Activemq 平台搭建与C#示列
  7. ASP.NET中常用的几个李天平开源公共类LTP.Common,Maticsoft.DBUtility,LtpPageControl (转)
  8. 【iHMI43 4.3寸液晶模块】demo例程(版本1.00)发布
  9. 6-10k招几个.NET开发工程师(工作地点:成都)
  10. AX函数,将EXCEL列号转为列名
  11. enum 使用
  12. 竹林蹊径-深入浅出Windows内核开发作者的博客
  13. c++犯的错误
  14. UIImage缩放
  15. Win8.1系统下配置搭建IIS8.5+PHP5.5.4运行环境
  16. 对Golang有兴趣的朋友,推荐一款go语言Web框架-dotweb
  17. 【python】lambda创建匿名函数
  18. android实现gif动态图的使用
  19. BZOJ_4765_普通计算姬_分块+dfs序+树状数组
  20. 跟王思聪热狗图一样大热的Redis,还不赶紧来Get一下?

热门文章

  1. OpenGL ES入门详解
  2. uoj#273. 【清华集训2016】你的生命已如风中残烛(组合数学)
  3. PJzhang:robots协议的实际场景
  4. VLAN-4-在路由器上配置Trunk
  5. bzoj2806 [Apio2012]dispatching【可并堆】
  6. 洛谷P1896||bzoj1087 [SCOI2005]互不侵犯
  7. 转 11g Grid Control: Overview of the EMCTL Options Available for Managing the Agent
  8. 按位&按位|按位~的详解
  9. kafka基础三
  10. 异步 ThreadPool