// // HttpManager.m // myhome // // Created by hkh on 16/11/6. // #import "Pub.h" #import @interface Pub (){ } @end @implementation Pub{ } + (AppDelegate *)getApp{ AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication]delegate]; return app; } + (sysInfo *)getSysInfo{ AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication]delegate]; return app.sysinfo; } + (BaseNavigationController*)getNav{ UITabBarController *tab = (UITabBarController *)[Pub getApp].window.rootViewController; if(tab){ UINavigationController *nav = tab.viewControllers[tab.selectedIndex]; return nav; } return nil; } + (NSString *)MD5:(NSString *)input //大写 { const char *cStr = [input UTF8String]; unsigned char digest[16]; CC_MD5( cStr, (CC_LONG)strlen(cStr), digest ); // This is the md5 call NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) [output appendFormat:@"%02X", digest[i]]; return output; } + (NSString *)md5_:(NSString *)input //大写 { const char *cStr = [input UTF8String]; unsigned char digest[16]; CC_MD5( cStr, (CC_LONG)strlen(cStr), digest ); // This is the md5 call NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) [output appendFormat:@"%02x", digest[i]]; return output; } + (NSDictionary *)DictionaryWithJsonString:(NSString *)jsonString { if (jsonString == nil) { return nil; } NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; NSError *err; NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; if(err) { NSLog(@"json解析失败:%@",err); return nil; } return dic; } + (void)addHead:(NSString *)head toByte:(Byte *)bb { Byte *tempbb; NSString *tempS; NSData *tempData; tempS = @"XXXCID"; tempData = [tempS dataUsingEncoding:NSUTF8StringEncoding]; tempbb = (Byte *)[tempData bytes]; memcpy(bb, tempbb, 6); } + (void)addEquid:(NSString *)equId toByte:(Byte *)bb at:(int)pos { Byte *tempbb; NSString *tempS; NSData *tempData; //本地 tempS = equId; tempData = [tempS dataUsingEncoding:NSUTF8StringEncoding]; tempbb = (Byte *)[tempData bytes]; memcpy(bb+pos, tempbb, [tempData length]); for (int i=(int)[tempData length]; i<20; i++){ bb[i+pos] = 0; } } + (int)getBBlen:(Byte *)bb Len:(int)len{ for(int i=0; i> 24); bb[pos+2] = (Byte)((port & 0x00FF0000) >> 16); bb[pos+1] = (Byte)((port & 0x0000FF00) >> 8); bb[pos] = (Byte)((port & 0x000000FF) ); } + (void)addShort:(int)port toByte:(Byte *)bb at:(int)pos { bb[pos+1] = (Byte)((port & 0x0000FF00) >> 8); bb[pos] = (Byte)((port & 0x000000FF) ); } + (short)getShortFromByte:(Byte *)bb at:(int)pos { return bb[pos] + bb[pos+1]*256; } + (int)Ox:(NSString *)v { int n = 0; int p = 0; NSString *s; for (int i=0; iifa_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)]; } } temp_addr = temp_addr->ifa_next; } } // Free memory freeifaddrs(interfaces); [Pub getApp].sysinfo.equip = address; }); return [Pub getApp].sysinfo.equip; } //针对ipv6网络环境下适配,ipv4环境直接使用原来的地址 + (NSString *)getMac { 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; } buf = malloc(len); if (buf == NULL) { printf("Could not allocate memory. error!/n"); return NULL; } if (sysctl(mib, 6, buf, &len, NULL, 0) < 0) { //printf("Error: sysctl, take 2"); free(buf); 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)]; free(buf); return [outstring uppercaseString]; } + (NSString *)getEquidFrombb:(Byte *)bb at:(int)pos { NSString *equid = nil; int equlen=8; if (bb[pos]==77) {//M equlen=8; } else if(bb[pos]==87) {//W equlen=5; } else if(bb[pos]==72){//H equlen=12; } else if(bb[pos]==83){//S equlen=12; } else if(bb[pos]==0x50){//P equlen=12; } else if(bb[pos]==0x54){//T equlen=16; } else{ equlen=12; } Byte tempbb[equlen]; memcpy(tempbb, bb+pos, equlen); NSData *aadata = [[NSData alloc] initWithBytes:tempbb length:equlen]; NSStringEncoding gbkEncoding =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); equid = [[NSString alloc] initWithData:aadata encoding:gbkEncoding]; return equid; } + (NSString *)NSdata2String:(NSData *)data{ NSStringEncoding gbkEncoding =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); return [[NSString alloc] initWithData:data encoding:gbkEncoding]; } + (NSData *)AES128_Encrypt:(NSString *)key encryptData:(NSData *)data{ char keyPtr[kCCKeySizeAES128+1]; bzero(keyPtr, sizeof(keyPtr)); [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; //无向量 // char ivPtr[kCCKeySizeAES128+1]; // memset(ivPtr, 0, sizeof(ivPtr)); // [gIv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding]; NSUInteger dataLength = [data length]; size_t bufferSize = dataLength + kCCBlockSizeAES128; void *buffer = malloc(bufferSize); size_t numBytesEncrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, keyPtr, kCCBlockSizeAES128, nil, [data bytes], dataLength, buffer, bufferSize, &numBytesEncrypted); if (cryptStatus == kCCSuccess) { return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted]; } free(buffer); return nil; } + (NSData *)AES128_Decrypt:(NSString *)key encryptData:(NSData *)data{ char keyPtr[kCCKeySizeAES128+1]; bzero(keyPtr, sizeof(keyPtr)); [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; //无向量 // char ivPtr[kCCKeySizeAES128+1]; // memset(ivPtr, 0, sizeof(ivPtr)); // [gIv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding]; NSUInteger dataLength = [data length]; size_t bufferSize = dataLength + kCCBlockSizeAES128; void *buffer = malloc(bufferSize); size_t numBytesDecrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, keyPtr, kCCBlockSizeAES128, nil, [data bytes], dataLength, buffer, bufferSize, &numBytesDecrypted); if (cryptStatus == kCCSuccess) { return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted]; } free(buffer); return nil; } //将NSData转换成十六进制的字符串则可使用如下方式: + (NSString *)convertDataToHexStr:(NSData *)data { if (!data || [data length] == 0) { return @""; } NSMutableString *string = [[NSMutableString alloc] initWithCapacity:[data length]]; [data enumerateByteRangesUsingBlock:^(const void *bytes, NSRange byteRange, BOOL *stop) { unsigned char *dataBytes = (unsigned char*)bytes; for (NSInteger i = 0; i < byteRange.length; i++) { NSString *hexStr = [NSString stringWithFormat:@"%x", (dataBytes[i]) & 0xff]; if ([hexStr length] == 2) { [string appendString:hexStr]; } else { [string appendFormat:@"0%@", hexStr]; } } }]; return string; } //将十六进制字符串转换为二进制数据 + (NSData *)dataFromHexString:(NSString *)hexString { // 去除字符串中的空格和换行符 NSString *cleanedString = [hexString stringByReplacingOccurrencesOfString:@" " withString:@""]; cleanedString = [cleanedString stringByReplacingOccurrencesOfString:@"\n" withString:@""]; // 检查字符串长度是否为偶数 if (cleanedString.length % 2 != 0) { // 如果长度为奇数,可以根据需要选择在字符串前面添加或去除一个字符 // 例如,你可以选择在前面添加一个零,或者去除最后一个字符 // cleanedString = [@"0" stringByAppendingString:cleanedString]; // 或者 // cleanedString = [cleanedString substringToIndex:cleanedString.length - 1]; } // 使用一个循环将每两个字符转换为一个字节 NSMutableData *data = [NSMutableData data]; for (NSInteger i = 0; i < cleanedString.length; i += 2) { NSString *byteString = [cleanedString substringWithRange:NSMakeRange(i, 2)]; NSScanner *scanner = [NSScanner scannerWithString:byteString]; unsigned int byteValue; [scanner scanHexInt:&byteValue]; uint8_t byte = (uint8_t)byteValue; [data appendBytes:&byte length:1]; } return data; } @end