iOS 工具类

工具类声明

#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yijianliuxiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值