iOS 工具类

来源:互联网 发布:有意义的化学式 知乎 编辑:程序博客网 时间:2024/05/16 10:13

工具类声明

#import <Foundation/Foundation.h>@interface DzcDES : NSObject+ (NSString *)encryptWithText:(NSString *)sText encryptWithKey:(NSString *)key encryptWithIv:(NSString *)iv;//加密+ (NSString *)decryptWithText:(NSString *)sText decryptWithKey:(NSString *)key decryptWithIv:(NSString *)iv;//解密+(NSString *)DZCTimer;//获得时间戳+(NSString *)getCurrentTime;//获取当前时间//将token值截取成两部分放到数组里面+(NSMutableArray *)XiuGaiToken:(NSString *)key;//得到路径的文件扩展名不带.+(NSString *)getTheSuffixName:(NSString *)path;//对字符串进行DES加密+(NSString *)jiamiString:(NSString *)_str;+(NSString *)jiemiString:(NSString *)_str;//得到手机当前IP地址+ (NSString *)getIPAddress;//得到手机标识+(NSString *)getIdentifierStr;//将字符串转换为字典+(NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString;//将字符串变成数组对象+(NSArray *)arrayWithJsonString:(NSString *)jsonstring;//警报+(void)alert:(NSString *)msg;//剔除字符串两端的空格+(NSString *)trim:(NSString *)_str;//汉子转拼音+(NSString *)hanZiToPinYin:(NSString *)_str;//获取网络类型+(NSString *)networktype;//获取运营商名字+(NSString *)getcarrierName;//重定向URL+(void)getNewUrlPassOldUrl:(NSString *)_oldUrl;//得到用户手机操作系统版本+(NSString *)getUserphoneModel;//得到用户操作系统版本+(NSString *)getUserPhoneVersion;//获取软件版本+(NSString *)getAppVersion;//检测手机系统剩余空间大小+ (NSString *)freeDiskSpaceInBytes;//获取缓存文件的大小+(long long)fileSizeAtPath:(NSString *)filePath;//base64解编码+(NSString *)DecodeBase64:(NSString *)_str;+(NSString *)Base64Code:(NSData *)_data;+(void)handAppconfig;+(NSString *)testUrl:(NSString *)_ImageUrl;//获取当前网速+ (NSArray *)getDataCounters;+ (NSString *) macaddress;+(UIImage*)getSubImage:(UIImage *)img;+(UIImage*)getSubImage:(UIImage *)image mCGRect:(CGRect)mCGRect centerBool:(BOOL)centerBool;//判断字符串是否为身份证号+ (BOOL) validateIdentityCard: (NSString *)identityCard;//解析服务器返回的数据+(id)HandleDataWith:(id )_data andModa:(NSObject *)_objc;//本地加密字符串+ (NSString *)JiamiLocal:(NSString *)str;//本地解密+(NSString *)JieMiLocal:(NSString *)str;@end

工具类实现

#import "DzcDES.h"#import "DZCUiapplication.h"#import"GTMBase64.h"#import<CommonCrypto/CommonCryptor.h>#import <CommonCrypto/CommonDigest.h>#include <ifaddrs.h>#include <arpa/inet.h>#import <CoreTelephony/CTTelephonyNetworkInfo.h>#import <CoreTelephony/CTCarrier.h>#import <sys/utsname.h>#import <sys/param.h>#import <sys/mount.h>#import <net/if_var.h>#import <sys/socket.h>#import <sys/sysctl.h>#import <net/if.h>#import <net/if_dl.h>#import "WHC_DataModel.h"@interface DzcDES()@end@implementation DzcDES//对字符串加密+ (NSString *)encryptWithText:(NSString *)sText encryptWithKey:(NSString *)key encryptWithIv:(NSString *)iv{    //kCCEncrypt 加密    return [self encrypt:sText encryptOrDecrypt:kCCEncrypt key:key encryptOperationIv:iv];}//对字符串解密+ (NSString *)decryptWithText:(NSString *)sText decryptWithKey:(NSString *)key decryptWithIv:(NSString *)iv{    //kCCDecrypt 解密    return [self encrypt:sText encryptOrDecrypt:kCCDecrypt key:key encryptOperationIv:iv];}//获取时间戳+(NSString *)DZCTimer{    NSDateFormatter *format=[[NSDateFormatter alloc]init];    [format setDateFormat:@"yyyy-MM-dd hh:mm:ss"];    NSDate *date2=[NSDate date];    NSDate *date=[format dateFromString:@"2016-04-15 00:00:00"];    //NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[date2 timeIntervalSinceDate:date]*1000];    //NSTimeInterval interval = [date2 timeIntervalSinceDate:date]*1000;    NSString *timeSp=[NSString stringWithFormat:@"%lld",(long long)[date2 timeIntervalSinceDate:date]*1000 ];    //DLog(@"时间%@--%@",date,date2);    return timeSp;    /*    NSDate *dates = [NSDate date];    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];    NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/beijing"];    [formatter setTimeZone:timeZone];    NSDate *date1=[formatter dateFromString:@"2016-04-15 00:00:00"];    NSString *loctime = [formatter stringFromDate:dates];    NSString *time=[formatter stringFromDate:date1];    DLog(@"%@--%@",dates,time);    return loctime;    */    //DLog(@"timeSp:%@",timeSp); //时间戳的值}+(NSString *)getCurrentTime{    NSDate *date=[NSDate date];    NSDateFormatter *formatter=[[NSDateFormatter alloc]init];    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];    NSTimeZone *timezone=[NSTimeZone timeZoneWithName:@"Asia/beijing"];    [formatter setTimeZone:timezone];    NSString *time=[formatter stringFromDate:date];    return time;}//将token值截取两个放到一个数组里面+(NSMutableArray *)XiuGaiToken:(NSString *)key{    NSMutableString *string=[NSMutableString stringWithFormat:@"%@0000000000000000",key];    NSString *newstr=[string substringToIndex:8];    NSMutableArray *arr=[NSMutableArray arrayWithObject:newstr];    newstr=[string substringWithRange:NSMakeRange(8, 8)];    [arr addObject:newstr];    return arr;}+ (NSString *)encrypt:(NSString *)sText encryptOrDecrypt:(CCOperation)encryptOperation key:(NSString *)key encryptOperationIv:(NSString *)initIv{    const void *dataIn;    size_t dataInLength;    if (encryptOperation == kCCDecrypt)//传递过来的是decrypt 解码    {        //解码 base64        NSData *decryptData = [GTMBase64 decodeData:[sText dataUsingEncoding:NSUTF8StringEncoding]];//转成utf-8并decode        dataInLength = [decryptData length];        dataIn = [decryptData bytes];    }    else  //encrypt    {        NSData* encryptData = [sText dataUsingEncoding:NSUTF8StringEncoding];        dataInLength = [encryptData length];        dataIn = (const void *)[encryptData bytes];    }    /*     DES加密 :用CCCrypt函数加密一下,然后用base64编码下,传过去     DES解密 :把收到的数据根据base64,decode一下,然后再用CCCrypt函数解密,得到原本的数据     */    CCCryptorStatus ccStatus;    uint8_t *dataOut = NULL; //可以理解位type/typedef 的缩写(有效的维护了代码,比如:一个人用int,一个人用long。最好用typedef来定义)    size_t dataOutAvailable = 0; //size_t  是操作符sizeof返回的结果类型    size_t dataOutMoved = 0;    dataOutAvailable = (dataInLength + kCCBlockSizeDES) & ~(kCCBlockSizeDES - 1);    dataOut = malloc( dataOutAvailable * sizeof(uint8_t));    memset((void *)dataOut, 0x0, dataOutAvailable);//将已开辟内存空间buffer的首 1 个字节的值设为值 0    const void *vkey = (const void *) [key UTF8String];    const void *iv = (const void *) [initIv UTF8String];    //CCCrypt函数 加密/解密    ccStatus = CCCrypt(encryptOperation,//  加密/解密                       kCCAlgorithmDES,//  加密根据哪个标准(des,3des,aes。。。。)                       kCCOptionPKCS7Padding,//  选项分组密码算法(des:对每块分组加一次密  3DES:对每块分组加三个不同的密)                       vkey,  //密钥    加密和解密的密钥必须一致                       kCCKeySizeDES,//   DES 密钥的大小(kCCKeySizeDES=8)                       iv, //  可选的初始矢量                       dataIn, // 数据的存储单元                       dataInLength,// 数据的大小                       (void *)dataOut,// 用于返回数据                       dataOutAvailable,                       &dataOutMoved);    NSString *result = nil;    if (encryptOperation == kCCDecrypt)//encryptOperation==1  解码    {        //得到解密出来的data数据,改变为utf-8的字符串        result = [[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)dataOut length:(NSUInteger)dataOutMoved] encoding:NSUTF8StringEncoding] ;    }    else //encryptOperation==0  (加密过程中,把加好密的数据转成base64的)    {        //编码 base64        NSData *data = [NSData dataWithBytes:(const void *)dataOut length:(NSUInteger)dataOutMoved];        result = [GTMBase64 stringByEncodingData:data];    }    return result;}//获得路径文件扩展名不带.+(NSString *)getTheSuffixName:(NSString *)path{    NSRange range=[path rangeOfString:@"?"];    if (range.location!=NSNotFound)    {        path=[path substringToIndex:range.location];        path=[path pathExtension];        return path;    }    else    {        path=[path pathExtension];        return path;    }}//对字符串进行加密+(NSString *)jiamiString:(NSString *)_str{        //提取token值        NSString *token=[[NSUserDefaults standardUserDefaults]valueForKey:@"token"];        //DLog(@"读取的token值%@",token);        //拆分token为key值和向量        NSMutableArray *arrtoken=[DzcDES XiuGaiToken:token];        //DLog(@"拆分后的token值%@",arrtoken);        //对字符串进行加密        NSString *uname=[self encryptWithText:_str encryptWithKey:arrtoken[0] encryptWithIv:arrtoken[1]];        return uname;    //}}//对字符串进行解密+(NSString *)jiemiString:(NSString *)_str{    //提取token值    NSString *token=[[NSUserDefaults standardUserDefaults]valueForKey:@"token"];    //DLog(@"读取的token值%@",token);    //拆分token为key值和向量    NSMutableArray *arrtoken=[DzcDES XiuGaiToken:token];    //DLog(@"拆分后的token值%@",arrtoken);    //对加密数据进行解密    NSString *string=[self decryptWithText:_str decryptWithKey:arrtoken[0] decryptWithIv:arrtoken[1]];    string=[self DecodeBase64:string];    return string;}//获取当前手机IP地址+ (NSString *)getIPAddress{    NSString *address = @"error";    struct ifaddrs *interfaces = NULL;    struct ifaddrs *temp_addr = NULL;    int success = 0;    // retrieve the current interfaces - returns 0 on success    success = getifaddrs(&interfaces);    if (success == 0) {        // Loop through linked list of interfaces        temp_addr = interfaces;        while (temp_addr != NULL) {            if( temp_addr->ifa_addr->sa_family == AF_INET) {                // Check if interface is en0 which is the wifi connection on the iPhone                if ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {                    // Get NSString from C String                    address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];                }                else                {                    address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];                }            }            temp_addr = temp_addr->ifa_next;        }    }    // Free memory    freeifaddrs(interfaces);    return address;}//获取当前手机标识+(NSString *)getIdentifierStr{    NSString *identifierStr =[[[UIDevice currentDevice] identifierForVendor] UUIDString];    identifierStr = [identifierStr stringByReplacingOccurrencesOfString:@"-" withString:@""];    if (identifierStr ==nil)    {        UIDevice *device = [UIDevice currentDevice];//创建设备对象        NSUUID *UUID = [device identifierForVendor];        identifierStr = [UUID UUIDString];        identifierStr = [identifierStr stringByReplacingOccurrencesOfString:@"-" withString:@""];    }    return identifierStr;    /*    CFUUIDRef puuid = CFUUIDCreate( nil );    CFStringRef uuidString = CFUUIDCreateString( nil, puuid );    NSString * result = (NSString *)CFBridgingRelease(CFStringCreateCopy( NULL, uuidString));    CFRelease(puuid);    CFRelease(uuidString);    NSString *indent=[NSString stringWithFormat:@" %@",result];    return indent;     */}//将字符串变成字典+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString{    if (jsonString == nil) {        return nil;    }    jsonString=[jsonString stringByReplacingOccurrencesOfString:@"\r" withString:@""];    jsonString=[jsonString stringByReplacingOccurrencesOfString:@"\n" withString:@""];    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];    NSError *err;    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData                                                        options:NSJSONReadingMutableContainers                                                          error:&err];    if(err) {        DLog(@"json解析失败:%@",err);        return nil;    }    return dic;}//将字符串变成数组对象+(NSArray *)arrayWithJsonString:(NSString *)jsonstring{    if (jsonstring == nil)    {        return nil;    }    jsonstring =[jsonstring stringByReplacingOccurrencesOfString:@"\r" withString:@""];    jsonstring=[jsonstring stringByReplacingOccurrencesOfString:@"\n" withString:@""];    NSData *jsonData=[jsonstring dataUsingEncoding:NSUTF8StringEncoding];    NSError *error;    NSArray *arr=[NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:&error];    if (error)    {        DLog(@"json解析失败:%@",error);        return nil;    }    return arr;}//警报+(void)alert:(NSString *)msg{   UIAlertView  *alert=[[UIAlertView alloc]initWithTitle:@"友情提醒" message:msg delegate:self cancelButtonTitle:@"我知道了" otherButtonTitles:nil, nil];    [alert show];}//剔除字符串两端的空格+(NSString *)trim:(NSString *)_str{    return [_str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];}//汉子转拼音+(NSString *)hanZiToPinYin:(NSString *)_str{    NSMutableString *ms = [[NSMutableString alloc] initWithString:_str];    NSString *str;    if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformMandarinLatin, NO)) {        DLog(@"pinyin: %@", ms);       str=[[NSString alloc]initWithFormat:@"%@",ms ];        str=[str stringByReplacingOccurrencesOfString:@" " withString:@""];    }    if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformStripDiacritics, NO)) {        DLog(@"pinyin: %@", ms);       str=[[NSString alloc]initWithFormat:@"%@",ms ];        str=[str stringByReplacingOccurrencesOfString:@" " withString:@""];    }    return str;}//获取网络类型+(NSString *)networktype{    NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"]subviews];    NSNumber *dataNetworkItemView = nil;    for (id subview in subviews) {        if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {            dataNetworkItemView = subview;            break;        }    }    switch ([[dataNetworkItemView valueForKey:@"dataNetworkType"]integerValue]) {        case 0:            //DLog(@"No wifi or cellular");            //infoLabel.text=@"无服务";            return @"无服务";            break;        case 1:            //DLog(@"2G");//            infoLabel.text=@"2G";            return @"2G";            break;        case 2:            //DLog(@"3G");//            infoLabel.text=@"3G";            return @"3G";            break;        case 3:            //DLog(@"4G");//            infoLabel.text=@"4G";            return @"4G";            break;        case 4:            //DLog(@"LTE");//            infoLabel.text=@"LTE";            return @"LTE";            break;        case 5:            //DLog(@"WIFI");//            infoLabel.text=@"Wifi";            return @"WIFI";            break;        default:            return @"无法识别网络";            break;    }}//得到运营商名称+(NSString *)getcarrierName{    CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init];    CTCarrier *carrier = [telephonyInfo subscriberCellularProvider];    NSString *currentCountry=[carrier carrierName];    DLog(@"[carrier isoCountryCode]==%@,[carrier allowsVOIP]=%d,[carrier mobileCountryCode=%@,[carrier mobileCountryCode]=%@",[carrier isoCountryCode],[carrier allowsVOIP],[carrier mobileCountryCode],[carrier mobileNetworkCode]);    DLog(@"运营商名字%@",currentCountry);    return currentCountry;}+(void)getNewUrlPassOldUrl:(NSString *)_oldUrl{    NSURL*url=[NSURL URLWithString:_oldUrl];    NSURLRequest *request=[[NSURLRequest alloc]initWithURL:url];    NSURLConnection *conection=[[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:YES];    if (conection==nil)    {        DLog(@"重定向url链接失败");    }}-(NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response {    DLog(@"================================================");    DLog(@"will send request\n%@", [request URL]);    DLog(@"redirect response\n%@", [response URL]);    if ([request URL]==nil&&[response URL]==nil)    {    }    else    {        DLog(@"重定向url=%@",[request URL]);        //[DZCUiapplication shareApplication].movieurl=[request URL];    }    return request;}//得到用户手机操作系统版本+(NSString *)getUserphoneModel{    //手机系统版本    NSString* phoneVersion = [[UIDevice currentDevice] systemVersion];    //DLog(@"手机系统版本: %@", phoneVersion);    NSString *phone=[NSString stringWithFormat:@"ios %@",phoneVersion];    return phone;}//获取软件版本+(NSString *)getAppVersion{    NSString *version=[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];    NSString *ver=[NSString stringWithFormat:@"OS v%@",version];    return ver;}//获取用户手机是苹果几+(NSString *)getUserPhoneVersion{    /*    //设备名称    NSString* deviceName = [[UIDevice currentDevice] systemName];    DLog(@"设备名称: %@",deviceName );    //手机系统版本    NSString* phoneVersion = [[UIDevice currentDevice] systemVersion];    DLog(@"手机系统版本: %@", phoneVersion);    NSString *str=[[NSString alloc]initWithFormat:@"%@%@",deviceName,phoneVersion ];    return str;     */    struct utsname systemInfo;    uname(&systemInfo);    NSString *deviceString = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];   // DLog(@"设备名称%@",deviceString);    if ([deviceString isEqualToString:@"iPhone3,1"])    return @"iPhone 4";    if ([deviceString isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";    if ([deviceString isEqualToString:@"iPhone5,2"])    return @"iPhone 5";    if ([deviceString isEqualToString:@"iPhone6,2"])    return @"iPhone 5S";    if ([deviceString isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";    if ([deviceString isEqualToString:@"iPhone7,2"]) return @"iPhone 6";    if ([deviceString isEqualToString:@"iPhone8,1"]) return @"iPhone 6s Plus";    if ([deviceString isEqualToString:@"iPhone8,2"]) return @"iPhone 6 s";    /*    if ([deviceString isEqualToString:@"iPod1,1"])      return @"iPod Touch 1G";    if ([deviceString isEqualToString:@"iPod2,1"])      return @"iPod Touch 2G";    if ([deviceString isEqualToString:@"iPod3,1"])      return @"iPod Touch 3G";    if ([deviceString isEqualToString:@"iPod4,1"])      return @"iPod Touch 4G";    if ([deviceString isEqualToString:@"iPad1,1"])      return @"iPad";    if ([deviceString isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";    if ([deviceString isEqualToString:@"iPad2,2"])      return @"iPad 2 (GSM)";    if ([deviceString isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";    if ([deviceString isEqualToString:@"iPad3,4"])      return @"iPad 4 (WiFi)";     */    if ([deviceString isEqualToString:@"i386"])         return @"iPhone";    if ([deviceString isEqualToString:@"x86_64"])       return @"iPhone";    //CLog(@"NOTE: Unknown device type: %@", deviceString);    else    {    return @"iPhone";    }}//检测手机剩余内存空间+ (NSString *) freeDiskSpaceInBytes{    struct statfs buf;    long long freespace = -1;    if(statfs("/var", &buf) >= 0){        freespace = (long long)(buf.f_bsize * buf.f_bfree);    }    return [NSString stringWithFormat:@"%qi" ,freespace/1024/1024];}//获取缓存文件大小+(long long)fileSizeAtPath:(NSString *)filePath{    NSFileManager *fileManger=[NSFileManager defaultManager];    if ([fileManger fileExistsAtPath:filePath])    {        return [[fileManger attributesOfItemAtPath:filePath error:nil]fileSize];    }    return 0;}//base64编码后解码+(NSString *)DecodeBase64:(NSString *)_str{    _str=[GTMBase64 decodeBase64String:_str];    return _str;}//base64编码+(NSString *)Base64Code:(NSData *)_data{     NSString *imageString=[_data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];    return imageString;}//解析配置数据+(void)handAppconfig;{    /*    //处理配置数据    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString *docDir=[paths lastObject];    NSString *fileName=[docDir stringByAppendingPathComponent:@"appconfig.txt"];//[NSTemporaryDirectory() stringByAppendingPathComponent:@"appconfig.data"];    if([[NSFileManager defaultManager]fileExistsAtPath:fileName])    {        NSData *_data=[NSData dataWithContentsOfFile:fileName];        NSString *str=[[NSString alloc]initWithData:_data encoding:NSUTF8StringEncoding];        NSDictionary *dict=[DzcDES dictionaryWithJsonString:str];        str=[dict valueForKey:@"data"];        str=[self jiemiString:str];        NSRange range=[str rangeOfString:@"[RP]"];        if (range.location!=NSNotFound)        {            str=[str stringByReplacingCharactersInRange:NSMakeRange(range.location-1, range.length+1) withString:@""];        }        range=[str rangeOfString:@"[RP]"];        if (range.location!=NSNotFound)        {            str=[str stringByReplacingCharactersInRange:NSMakeRange(range.location, range.length+1) withString:@""];        }        dict=[DzcDES dictionaryWithJsonString:str];        DLog(@"%@",dict);        DZCAppConfig *dzcappconfig=[DZCAppConfig shareApplication];        dzcappconfig.AppState=[dict valueForKey:@"AppState"];        dzcappconfig.OpenReg=[dict valueForKey:@"OpenReg"];        dzcappconfig.PayList=[dict objectForKey:@"PayList"];        dzcappconfig.RegInstr=[dict valueForKey:@"RegInstr"];        dzcappconfig.VIPInstr=[dict objectForKey:@"VIPInstr"];        dzcappconfig.WeiXin=[dict objectForKey:@"WeiXin"];        dzcappconfig.AD=[dict objectForKey:@"AD"];        dzcappconfig.AppModel=[dict objectForKey:@"AppModel"];        dzcappconfig.Share=[dict objectForKey:@"Share"];        if ([dzcappconfig.AppState isEqualToString:@"1"])        {            UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"友情提示" message:@"服务器维护中..." delegate:nil cancelButtonTitle:@"我知道了" otherButtonTitles:nil, nil];            [alert show];        }        NSDictionary *navdict=[dict objectForKey:@"VideoListConfig"];        [navdict writeToFile:[docDir stringByAppendingPathComponent:@"videoList.txt"] atomically:YES];        DLog(@"%@",[[NSBundle mainBundle] pathForResource:@"videoList" ofType:@"txt"]);    }     */}+(NSString *)testUrl:(NSString *)_ImageUrl{    NSRange range=[_ImageUrl rangeOfString:@"http://"];    NSString *imageurl;    if (range.location!=NSNotFound)    {        NSRange rangeone=[_ImageUrl rangeOfString:@".jpg"];        if (rangeone.location!=NSNotFound)        {            imageurl=[NSString stringWithFormat:@"%@",_ImageUrl];        }        if(rangeone.location ==NSNotFound)        {            imageurl=[NSString stringWithFormat:@"%@.jpg",_ImageUrl];        }    }    if(range.location ==NSNotFound)    {        imageurl=[NSString stringWithFormat:@"%@%@",HOST,_ImageUrl];    }    return imageurl;}+ (NSArray *)getDataCounters{    BOOL success;    struct ifaddrs *addrs;    struct ifaddrs *cursor;    struct if_data *networkStatisc;    long WiFiSent = 0;    long WiFiReceived = 0;    long WWANSent = 0;    long WWANReceived = 0;    NSString *name=[[NSString alloc]init];    success = getifaddrs(&addrs) == 0;    if (success)    {        cursor = addrs;        while (cursor != NULL)        {            name=[NSString stringWithFormat:@"%s",cursor->ifa_name];            //NSLog(@"ifa_name %s == %@\n", cursor->ifa_name,name);            // names of interfaces: en0 is WiFi ,pdp_ip0 is WWAN            if (cursor->ifa_addr->sa_family == AF_LINK)            {                if ([name hasPrefix:@"en"])                {                    networkStatisc = (struct if_data *) cursor->ifa_data;                    WiFiSent+=networkStatisc->ifi_obytes;                    WiFiReceived+=networkStatisc->ifi_ibytes;                    //NSLog(@"WiFiSent %d ==%d",WiFiSent,networkStatisc->ifi_obytes);                    //NSLog(@"WiFiReceived %d ==%d",WiFiReceived,networkStatisc->ifi_ibytes);                }                if ([name hasPrefix:@"pdp_ip"])                {                    networkStatisc = (struct if_data *) cursor->ifa_data;                    WWANSent+=networkStatisc->ifi_obytes;                    WWANReceived+=networkStatisc->ifi_ibytes;                    //NSLog(@"WWANSent %d ==%d",WWANSent,networkStatisc->ifi_obytes);                    //NSLog(@"WWANReceived %d ==%d",WWANReceived,networkStatisc->ifi_ibytes);                }            }            cursor = cursor->ifa_next;        }        freeifaddrs(addrs);    }    return [NSArray arrayWithObjects:[NSNumber numberWithInt:WiFiSent/1024/1024], [NSNumber numberWithInt:WiFiReceived/1024/1024],[NSNumber numberWithInt:WWANSent/1024],[NSNumber numberWithInt:WWANReceived/1024], nil];}//获取mac地址+ (NSString *) macaddress{    int                    mib[6];    size_t                len;    char                *buf;    unsigned char        *ptr;    struct if_msghdr    *ifm;    struct sockaddr_dl    *sdl;    mib[0] = CTL_NET;    mib[1] = AF_ROUTE;    mib[2] = 0;    mib[3] = AF_LINK;    mib[4] = NET_RT_IFLIST;    if ((mib[5] = if_nametoindex("en0")) == 0) {        printf("Error: if_nametoindex error/n");        return NULL;    }    if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0) {        printf("Error: sysctl, take 1/n");        return NULL;    }    if ((buf = malloc(len)) == NULL) {        printf("Could not allocate memory. error!/n");        return NULL;    }    if (sysctl(mib, 6, buf, &len, NULL, 0) < 0) {        printf("Error: sysctl, take 2");        return NULL;    }    ifm = (struct if_msghdr *)buf;    sdl = (struct sockaddr_dl *)(ifm + 1);    ptr = (unsigned char *)LLADDR(sdl);    // NSString *outstring = [NSString stringWithFormat:@"%02x:%02x:%02x:%02x:%02x:%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];    NSString *outstring = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];    free(buf);    return [outstring uppercaseString];}//截取部分图片//截取部分图像+(UIImage*)getSubImage:(UIImage *)img{    UIImageView *imageView=[[UIImageView alloc]initWithImage:img];    imageView.contentMode=UIViewContentModeBottomRight;    imageView.clipsToBounds=YES;    imageView.frame=CGRectMake(5, 5, 5, 5);    return imageView.image;}//按照Fram截取图片+(UIImage*)getSubImage:(UIImage *)image mCGRect:(CGRect)mCGRect centerBool:(BOOL)centerBool{    /*如若centerBool为Yes则是由中心点取mCGRect范围的图片*/    float imgwidth = image.size.width;    float imgheight = image.size.height;    float viewwidth = mCGRect.size.width;    float viewheight = mCGRect.size.height;    CGRect rect;    if(centerBool)        rect = CGRectMake((imgwidth-viewwidth)/2, (imgheight-viewheight)/2, viewwidth, viewheight);    else{        if (viewheight < viewwidth) {            if (imgwidth <= imgheight) {                rect = CGRectMake(0, 0, imgwidth, imgwidth*viewheight/viewwidth);            }else {                float width = viewwidth*imgheight/viewheight;                float x = (imgwidth - width)/2 ;                if (x > 0) {                    rect = CGRectMake(x, 0, width, imgheight);                }else {                    rect = CGRectMake(0, 0, imgwidth, imgwidth*viewheight/viewwidth);                }            }        }else {            if (imgwidth <= imgheight) {                float height = viewheight*imgwidth/viewwidth;                if (height < imgheight) {                    rect = CGRectMake(0, 0, imgwidth, height);                }else {                    rect = CGRectMake(0, 0, viewwidth*imgheight/viewheight, imgheight);                }            }else {                float width = viewwidth*imgheight/viewheight;                if (width < imgwidth) {                    float x = (imgwidth - width)/2 ;                    rect = CGRectMake(x, 0, width, imgheight);                }else {                    rect = CGRectMake(0, 0, imgwidth, imgheight);                }            }        }    }    CGImageRef subImageRef = CGImageCreateWithImageInRect(image.CGImage, rect);    CGRect smallBounds = CGRectMake(0, 0, CGImageGetWidth(subImageRef), CGImageGetHeight(subImageRef));    UIGraphicsBeginImageContext(smallBounds.size);    CGContextRef context = UIGraphicsGetCurrentContext();    CGContextDrawImage(context, smallBounds, subImageRef);    UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];    UIGraphicsEndImageContext();    return smallImage;}//身份证号+ (BOOL) validateIdentityCard: (NSString *)identityCard{    BOOL flag;    if (identityCard.length <= 0) {        flag = NO;        return flag;    }    NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";    NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];    return [identityCardPredicate evaluateWithObject:identityCard];}//解析服务器返回的数据+(id)HandleDataWith:(id )_data andModa:(NSObject *)_objc{    NSString *data=[_data valueForKey:@"data"];    data=[DzcDES jiemiString:data];    NSArray *array=[DzcDES arrayWithJsonString:data];    return [WHC_DataModel dataModelWithArray:array className:[_objc class]];}+ (NSString *)JiamiLocal:(NSString *)str{    //提取token值    NSString *token=@"7C26642A4F204DF48791F8C2B776D046";    //DLog(@"读取的token值%@",token);    //拆分token为key值和向量    NSMutableArray *arrtoken=[DzcDES XiuGaiToken:token];    //DLog(@"拆分后的token值%@",arrtoken);    //对字符串进行加密    NSString *uname=[self encryptWithText:str encryptWithKey:arrtoken[0] encryptWithIv:arrtoken[1]];    return uname;}+(NSString *)JieMiLocal:(NSString *)str{    //提取token值    NSString *token=@"7C26642A4F204DF48791F8C2B776D046";    //DLog(@"读取的token值%@",token);    //拆分token为key值和向量    NSMutableArray *arrtoken=[DzcDES XiuGaiToken:token];    //DLog(@"拆分后的token值%@",arrtoken);    //对加密数据进行解密    NSString *string=[self decryptWithText:str decryptWithKey:arrtoken[0] decryptWithIv:arrtoken[1]];    return string;}@end
0 0