美文网首页
ios网络参数加密工具方法

ios网络参数加密工具方法

作者: Arthur澪 | 来源:发表于2018-02-06 14:01 被阅读0次

传入字符串,输出它的base64编码结果

- (NSString *)getEncryption:(NSString *)data secret:(NSString *)secret{ 
 //传入 需要编码的数据
    
    NSString* key = secret;  //key固定
    
    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 *hash = [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];   //得到一个hash二进制数
    
//调用类方法,参数为hash,进行数据编码,返回编码结果
    NSString *result = [PDEncryptionTools base64forData:hash];   

    return [result stringByReplacingOccurrencesOfString:@"+" withString:@"_"];
}

进行base64编码

+ (NSString*)base64forData:(NSData*)theData {
    const uint8_t* input = (const uint8_t*)[theData bytes];   //数据 字节 类型转换为 8位2进制
    NSInteger length = [theData length];   //数据的长度
    
    static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    
    NSMutableData* data = [NSMutableData dataWithLength:((length + 2) / 3) * 4];
    uint8_t* output = (uint8_t*)data.mutableBytes;
    
    NSInteger i;
    for (i=0; i < length; i += 3) {
        NSInteger value = 0;
        NSInteger j;
        for (j = i; j < (i + 3); j++) {
            value <<= 8;
            
            if (j < length) {
                value |= (0xFF & input[j]);
            }
        }
        NSInteger theIndex = (i / 3) * 4;
        output[theIndex + 0] = table[(value >> 18) & 0x3F];
        output[theIndex + 1] = table[(value >> 12) & 0x3F];
        output[theIndex + 2] = (i + 1) < length ? table[(value >> 6) & 0x3F] : '=';
        output[theIndex + 3] = (i + 2) < length ? table[(value >> 0) & 0x3F] : '=';
    }
    
    return [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];  //返回加密的数据
}

密钥
#define SECRET @"8b11c62e-2dfe-4921-b108-d9fd621ce7e5"

需要引入:
<Foundation/Foundation.h>、<CommonCrypto/CommonHMAC.h>

相关文章

  • ios网络参数加密工具方法

    传入字符串,输出它的base64编码结果 进行base64编码 密钥#define SECRET @"8b11c6...

  • iOS安全/代码混淆

    APP 一般经常做的网络参数加密解密,加密方法有base64、MD5、AES、RSA、DES等加密方法、这些加密一...

  • iOS几种加密方式

    iOS 几种加密方法2017-06-19 [iOS开发] iOS常见的几种加密方法 普通加密方法是讲密码进行加密后...

  • iOS HmacSha256Hex签名

    为了网络安全,后台会对接口进行加密,需要对请求的参数进行sign加密。此时此刻,我们iOS开发对需要对sign签名...

  • 闭包 * block * 代理 * 使用实例

    block是iOS4.0时才出现的技术 一.闭包 网络请求工具类,封装方法时,把闭包当参数封装,并在内部执行,这样...

  • iOS、后台、Android 三个一致的加密工具 -----

    iOS、后台、Android 三个一致的加密工具 ---------DES加密 首先是JAVA端的加密工具类,它同...

  • iOS 和 js 交互

    js调用iOS代码 1、iOS定义方法 2、实现方法 3、js端实现方法 js给iOS传参数 1、单个参数 2、多...

  • iOS动态调用类方法

    iOS动态调用类方法(不带参数) iOS动态调用类方法(带参数) iOS动态调用类方法(有返回值) 优点 弱化连接...

  • ios加固,ios代码混淆,ios代码混淆工具, iOS源码混淆

    ios加固,ios代码混淆,ios代码混淆工具,iOS源码混淆产品是一款纯离线的源码加密工具,主要用于保护iOS项...

  • 技能tree

    iOS 1、网络通信:socket、网络协议、request 2、安全方案:数据加密、传输加密、代码安全 3、数据...

网友评论

      本文标题:ios网络参数加密工具方法

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