• 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

  • 相关阅读:
    若依问题解决(一)
    Java 将两个List转换为流合并List
    后端返回前端文本换行显示,只能在前端再转换
    Java Stream() 流根据对象属性去重
    vue 当前端传回后端,后端使用实体类接收数据显示报错
    js 中 getMonth() 获取的月份比现实少一个月
    vue连个数组对比
    JS链接跳转方法
    ElementUI--表格toggleRowSelection无法选中
    Linux 常用命令
  • 原文地址:https://www.cnblogs.com/WayneLiu/p/4925170.html
Copyright © 2020-2023  润新知