博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 之字段排序并且SHA1加密
阅读量:4289 次
发布时间:2019-05-27

本文共 3139 字,大约阅读时间需要 10 分钟。

#import <CommonCrypto/CommonDigest.h>

//SHA1加密方式

+(NSString*)sha1WithStr:(NSString *)str

{

    constchar *cstr = [strcStringUsingEncoding:NSUTF8StringEncoding];

    NSData *data = [NSDatadataWithBytes:cstr length: strlen(cstr)];

    

    uint8_t digest[CC_SHA1_DIGEST_LENGTH];

    

    CC_SHA1(data.bytes, data.length, digest);

    

    NSMutableString* output = [NSMutableStringstringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];

    

    for(int i = 0; i <CC_SHA1_DIGEST_LENGTH; i++)

        [output appendFormat:@"%02x", digest[i]];

    

    return output;

}

+(NSMutableDictionary *)publicDict{

    NSDictionary *infoDictionary = [[NSBundlemainBundle] infoDictionary];

    CFShow(CFBridgingRetain(infoDictionary));//打印出infoDictionary的详细信息

    

    //bundelID

    NSString *bundelID= [[NSBundlemainBundle] bundleIdentifier];

//    NSLog(@"bundelID---%@",bundelID);

    

    // app名称displayName

    NSString *app_Name = [infoDictionaryobjectForKey:@"CFBundleDisplayName"];

//    NSLog(@"app名称displayname---%@",app_Name);

    

    // app名称name,displayname存在时,name显示为overridedisplayname不存在时,name正常显示

    NSString *name = [infoDictionaryobjectForKey:@"CFBundleName"];

//    NSLog(@"app名称name---%@",name);

    

    //手机序列号(唯一标识)

    NSString* identifierNumber =[[[UIDevicecurrentDevice] identifierForVendor]UUIDString];

//    NSLog(@"手机序列号: %@",identifierNumber);

    

    //设备名称

    NSString* deviceName = [[UIDevicecurrentDevice] systemName];

//    NSLog(@"设备名称: %@",deviceName );

    //手机系统版本

    NSString* phoneVersion = [[UIDevicecurrentDevice] systemVersion];

//    NSLog(@"手机系统版本: %@", phoneVersion);

    //手机型号

    NSString* phoneModel = [[UIDevicecurrentDevice] model];

//    NSLog(@"手机型号: %@",phoneModel );

    

    NSMutableString *model=[NSMutableStringstringWithString:[deviceNamestringByAppendingString:[NSStringstringWithFormat:@" %@",phoneVersion]]];

    [model appendString:[NSStringstringWithFormat:@"/%@",phoneModel]];

//    NSLog(@"model---%@",model);

    

    NSString *agentStr=[[WofuCommanManagersharedManager].agentstringByReplacingOccurrencesOfString:@"-"withString:@""];

//    NSLog(@"agentStr---%@",agentStr);

    int  randNum=19+arc4random()%10;

    NSString *noiseStr=[agentStrsubstringToIndex:randNum];

    NSMutableDictionary *params=[NSMutableDictionarydictionaryWithDictionary:@{

                                                        @"version":@"1.1",

                                                        @"agent":[WofuCommanManagersharedManager].agent,

                                                        @"device":identifierNumber,

                                                        @"model":model,

                                                        @"package":bundelID,

                                                        @"appname":app_Name?app_Name:name,

                                                        @"noise":noiseStr

                                                                                

                                                                                }];

    

    return params;

}

+(NSMutableDictionary *)publicSignParamsWithDict:(NSMutableDictionary *)params{

    NSArray *keyArr=[paramsallKeys];

    

    keyArr = [keyArr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){

        NSComparisonResult result = [obj1compare:obj2];

        return result;

    }];

//    NSLog(@"key数组002%@",keyArr);

    NSMutableString *signStr=[[NSMutableStringalloc]initWithCapacity:10];

    for (int i=0; i<keyArr.count; i++) {

        NSString *key=keyArr[i];

        

        

        [signStr appendString:[NSStringstringWithFormat:@"%@=",key]];

        

        

        [signStr

         appendString:params[key]];

        

        [signStr appendString:@"&"];

        

        

    }

    

    [signStr appendString:[NSStringstringWithFormat:@"key=%@",[WofuCommanManagersharedManager].seckey]];

    

//      NSLog(@"拼接参数---%@",signStr);

    //SHA1计算上面拼接的字符串

    NSString *sha1str=[selfsha1WithStr:signStr];

    

    NSLog(@"sha1--%@",sha1str);

    [params setObject:sha1strforKey:@"sign"];

    

    return params;

}

转载地址:http://ocmgi.baihongyu.com/

你可能感兴趣的文章
Log4j容器深入探究
查看>>
记glide框架使用中所遇到的问题
查看>>
学习AOP之透过Spring的Ioc理解Advisor
查看>>
Jquery一个简单的注册验证
查看>>
SpringMVC基础_ControllerAdvice
查看>>
Toast还能显示图片你知道么?
查看>>
安卓三状态切换按钮TriStateToggleButton
查看>>
Spring框架-AOP细节
查看>>
java.lang.Instrument 代理Agent使用
查看>>
Javascript:指针、帽子和女朋友
查看>>
Android中的ALERTDIALOG使用_优就业
查看>>
java使用javacsv读取csv文件 导入Mysql数据库
查看>>
Toolbar 不为人知的助手,ActionMenuView
查看>>
Java回调方法详解
查看>>
如何获取url中的参数并传递给iframe中的报表
查看>>
以前端架构师的思想看问题:解决单页应用,系统角色请求抢占session发送请求问题
查看>>
jsessionid问题解决方案
查看>>
MySQL和Oracle的delete,truncate
查看>>
idea使用心得(2)-安装设置与创建web项目
查看>>
将项目放到服务器tomcat上运行
查看>>