工具类声明
#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