SGMSettingConfig.h

#import <Foundation/Foundation.h>

@interface SGMSettingConfig : NSObject{

NSInteger HTTP_PACKAGE_SIZE;

NSInteger HTTP_RETRY_TIMES;

NSInteger REPLY_LENGTH;

NSInteger MAX_AUDIO_TIME;

NSInteger MAX_RESULT_AMOUNT;

BOOL USE_DENOISE_AGC;

NSInteger API_VERSION;

}

@property(nonatomic) NSInteger HTTP_PACKAGE_SIZE;

@property(nonatomic) NSInteger HTTP_RETRY_TIMES;

@property(nonatomic) NSInteger REPLY_LENGTH;

@property(nonatomic) NSInteger MAX_AUDIO_TIME;

@property(nonatomic) NSInteger MAX_RESULT_AMOUNT;

@property(nonatomic) BOOL USE_DENOISE_AGC;

@property(nonatomic) NSInteger API_VERSION;

//获取设备MAC地址

-(NSString *)macAddress;

//给定信息进行MD5

-(NSString *)getMD5:(NSString *)paramStr;

//给设备MAC地址进行MD5加密

-(NSString *)macMD5;

@end

SGMSettingConfig.m

#import "SGMSettingConfig.h"

#import <CommonCrypto/CommonDigest.h>

#include <sys/socket.h>

#include <sys/sysctl.h>

#include <net/if.h>

#include <net/if_dl.h>

@implementation SGMSettingConfig

@synthesize HTTP_PACKAGE_SIZE;

@synthesize HTTP_RETRY_TIMES;

@synthesize REPLY_LENGTH;

@synthesize MAX_AUDIO_TIME;

@synthesize MAX_RESULT_AMOUNT;

@synthesize USE_DENOISE_AGC;

@synthesize API_VERSION;

-(id)init{

if(self = [super init]){

HTTP_PACKAGE_SIZE = 3000;

HTTP_RETRY_TIMES = 2;

REPLY_LENGTH = 2600;

MAX_AUDIO_TIME = 30;

MAX_RESULT_AMOUNT = 5;

USE_DENOISE_AGC = false;

API_VERSION = 1000;

}

returnself;

}

//获取设备MAC地址

-(NSString *)macAddress{

//Get MAC Address as unique identifier

int mib[6];

size_t len;

char *buf;

unsignedchar *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)

returnnil;  //Error:if_nametoindex error

if(sysctl(mib, 6, NULL, &len, NULL, 0) < 0)

returnnil;  //Error:sysctl, take 1

if((buf = malloc(len)) == NULL)

returnnil;  //Could not allocate memory. error!

if(sysctl(mib, 6, buf, &len, NULL, 0) < 0){

free(buf);

returnnil;  //Error:sysctl, take 2

}

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];

}

//给定信息进行MD5

-(NSString *)getMD5:(NSString *)paramStr{

const char *cStr = [paramStr UTF8String];

unsigned char result[16];

CC_MD5(cStr, strlen(cStr), result);

/*

//获取全部加密MD5值

NSString *md5Str = [NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",result[0],result[1],result[2],result[3],result[4],result[5],result[6],result[7],result[8],result[9],result[10],result[11],result[12],result[13],result[14],result[15]];

return [md5Str substringFromIndex:12];//从第12个元素开始取值,取后4个值(12-15)

*/

NSString *md5Str = [NSString stringWithFormat:@"%02X%02X%02X%02X",result[12],result[13],result[14],result[15]];

return md5Str;

}

//给设备MAC地址进行MD5加密

-(NSString *)macMD5{

NSString *paramStr = [self macAddress];

return [self getMD5:paramStr];

}

- (void)dealloc

{

[super dealloc];

}

@end

获取设备mac地址和md5加密的更多相关文章

  1. Android 获取手机Mac地址,手机名称

    /** * 获取手机mac地址<br/> * 错误返回12个0 */ public static String getMacAddress(Context context) { // 获取 ...

  2. Python 获取 网卡 MAC 地址

    /*********************************************************************** * Python 获取 网卡 MAC 地址 * 说明: ...

  3. js获取客户端MAC地址

    最近遇到一个需求,医院要求呼叫中心账号必须对应MAC地址,也就是说该MAC地址必须和呼叫中心账号对应才可使用,这可就难道我了,这需求就要求每次都判断用户登录的电脑MAC地址是否有呼叫中心账号,当然只针 ...

  4. js 获取客户端mac地址

    js 获取客户端mac地址 javascript获取客户端网卡MAC地址和IP地址和计算机名 nodesj如何获得客户端的mac地址呢? 浏览器获取MAC地址 不限浏览器的mac地址取得的几种办法 I ...

  5. java 通过ip获取客户端mac地址

    java 通过ip获取客户端mac地址 package com.asppro.util; import java.io.BufferedReader; import java.io.IOExcepti ...

  6. 解决Android 6.0获取wifi Mac地址为02:00:00:00:00:00问题【转】

    本文转载自:http://www.jb51.net/article/128398.htm 这篇文章主要介绍了Android 6.0获取wifi Mac地址为02:00:00:00:00:00的解决方法 ...

  7. PowerBulider获取计算机mac地址

    PowerBulider获取计算机mac地址 1.下载GETNET.DLL获取网络资源的API 2.PB的全局函数中的引入需要API,常用API列表如下 //得到计算机名字 function bool ...

  8. 获取客户端Mac地址

    近期有个需求,需要获取客户端Mac地址作为白名单验证的依据.使用.net,B/S架构.先百度找了一些获取mac地址的方法, using System; using System.Collections ...

  9. 在安卓6.0(及以上)设备上无法获取无线网卡MAC地址的解决方案

    在安卓6.0以下的设备上,通过WifiManager.getConnectionInfo().getMacAddress()即可获取WLAN物理地址, 而在6.0及以上,以此方式获取到的MAC地址为固 ...

随机推荐

  1. MetaData Lock 杨奇龙 ---MYSQL博客专家

    http://blog.itpub.net/22664653/viewspace-1791608/ http://blog.csdn.net/dba_waterbin/article/details/ ...

  2. WCF - 消息

    SOAP SOAP是Simple Object Access Protocol(简单对象访问协议)的简称 而如今SOAP已经成为了符合W3C制定的SOAP规范的消息 允许您使用 XML 在通过低层 I ...

  3. Java基础知识强化之集合框架笔记57:Map集合之HashMap集合(HashMap<Student,String>)的案例

    1. HashMap集合(HashMap<Student,String>)的案例 HashMap<Student,String>键:Student      要求:如果两个对象 ...

  4. [转]cookie、session、sessionid 与jsessionid

    cookie.session.sessionid 与jsessionid,要想明白他们之间的关系,下面来看个有趣的场景来帮你理解. 我们都知道银行,银行的收柜台每天要接待客户存款/取款业务,可以有几种 ...

  5. python基础知识十一

    图形软件 使用Python的GUI库——你需要使用这些库来用Python语言创建你自己的图形程序.使用GUI库和它们的Python绑定,你可以创建你自己的IrfanView.Kuickshow软件或者 ...

  6. A题笔记(5)

    No. 1385 挤牛奶问题 Tips: 查找之前对数据进行一下排列会比较好; 两个“最长”放在一趟遍历里查找. class LT { public: int bt; int ct; int dura ...

  7. C#线程池基础

    池(Pool)是一个很常见的提高性能的方式.比如线程池连接池等,之所以有这些池是因 为线程和数据库连接的创建和关闭是一种比较昂贵的行为.对于这种昂贵的资源我们往往会考虑在一个池容器中放置一些资源,在用 ...

  8. Input的readonly 属性与disabled属性

    readonly 不可编辑,可以获得焦点,背景颜色默认灰色,值的字体颜色默认为灰色,值可以在请求中传递 disabled 不可编辑,不可以获得焦点,背景颜色默认灰色,值的字体颜色默认为灰色,值不可以在 ...

  9. OpenCV Tricks[OpenCV 笔记3]

    官方例程 事例程序位于opencv-3.1.0/samples/cpp/ 目录下,可以通过编译整个工程,编译所有的Sample Code 显示当前使用的OpenCV版本 CV_VERSION为标识当前 ...

  10. ueditor之ruby on rails 版

    最近公司的项目开始要使用ueditor了,但是ueditor却没有提供rails的版本,因此需要自己去定制化ueditor来满足项目的需求.不多说了,先简要说明下使用方法: ueditor目录下: 注 ...