获取设备mac地址和md5加密
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加密的更多相关文章
- Android 获取手机Mac地址,手机名称
/** * 获取手机mac地址<br/> * 错误返回12个0 */ public static String getMacAddress(Context context) { // 获取 ...
- Python 获取 网卡 MAC 地址
/*********************************************************************** * Python 获取 网卡 MAC 地址 * 说明: ...
- js获取客户端MAC地址
最近遇到一个需求,医院要求呼叫中心账号必须对应MAC地址,也就是说该MAC地址必须和呼叫中心账号对应才可使用,这可就难道我了,这需求就要求每次都判断用户登录的电脑MAC地址是否有呼叫中心账号,当然只针 ...
- js 获取客户端mac地址
js 获取客户端mac地址 javascript获取客户端网卡MAC地址和IP地址和计算机名 nodesj如何获得客户端的mac地址呢? 浏览器获取MAC地址 不限浏览器的mac地址取得的几种办法 I ...
- java 通过ip获取客户端mac地址
java 通过ip获取客户端mac地址 package com.asppro.util; import java.io.BufferedReader; import java.io.IOExcepti ...
- 解决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的解决方法 ...
- PowerBulider获取计算机mac地址
PowerBulider获取计算机mac地址 1.下载GETNET.DLL获取网络资源的API 2.PB的全局函数中的引入需要API,常用API列表如下 //得到计算机名字 function bool ...
- 获取客户端Mac地址
近期有个需求,需要获取客户端Mac地址作为白名单验证的依据.使用.net,B/S架构.先百度找了一些获取mac地址的方法, using System; using System.Collections ...
- 在安卓6.0(及以上)设备上无法获取无线网卡MAC地址的解决方案
在安卓6.0以下的设备上,通过WifiManager.getConnectionInfo().getMacAddress()即可获取WLAN物理地址, 而在6.0及以上,以此方式获取到的MAC地址为固 ...
随机推荐
- Gstreamer 数据流线程(GstTask / GstTaskPool)分析
作者:fengcc 原创文章 转载请注明出处 GStreamer 是一个基于流水线的多媒体框架,基于 GObject,以 C 语言写成. 凭借 GStreamer,程序员可以很容易地创建各种多媒体功能 ...
- JDK8新特性之Lambda表达式
Lambda表达式主要是替换了原有匿名内部类的写法,也就是简化了匿名内部类的写法.lambda语法结构: (参数1,参数2...)->{重写方法的内容,不定义方法名} 先看一个使用匿名内部类定义 ...
- C# FileSystemWatcher 监视磁盘文件变更
简化需求:有一个简化了的需求是这样的:有一个拍照程序在运行,一旦抓拍之后则将图片文件存储至某目录,然后图片要上传至远程服务器并update数据库. 原需求:原先的需求是这样的:有一台PDA扫码枪,一个 ...
- 程序员带你十天快速入门Python,玩转电脑软件开发(三)
声明:本次教程主要适用于已经习得一门编程语言的程序员.想要学习第二门语言.有梦想,立志做全栈攻城狮的你 . 如果是小白,也可以学习本教程.不过可能有些困难.如有问题在文章下方进行讨论.或者添加QQ群5 ...
- Base64的Java代码实现
欢迎拍砖~ 在数据二进制和byte互相转换的地方方法写得有点挫,不知道有没有更好的方法~ 顺便复习了java的一些基础东西,如位操作,原码反码补码 可以在这篇blog里学习到详细的知识点:http:/ ...
- js--小结④
举例子,一个demo.提醒自己经常性会在onclick 和function()这两个地方出错 onclick会输少一个字母 function会忘记输括号
- VB------VS2012 IDE
当编辑器的前面出现很多小点不影响 运行的时候 Ctrl+E+S就可以取消
- JDBC、Hibernate、Mybaites处理数据的流程及对DAO的理解
以查询一个用户信息(id,name)为例: JDBC 1. 获取一个connection 2. 生成一个statement 3. 拼接SQL语句 4. 查询对象,获取结果集(假设已经找到我们需要的对象 ...
- [上传下载] C#修改DownLoadHelper上传下载帮助类 (转载)
点击下载 DownLoadHelper.rar 主要功能如下 /// <summary> /// 输出硬盘文件,提供下载 支持大文件.续传.速度限制.资源占用小 /// </summ ...
- linq 中的分组查询
直接看代码: //一个字段分组 var data1 = from a in query group a by a.Name into b select new { Total = b.Sum(c=&g ...