iOS7获取UUID以及转换MD5

近期项目开发,运用到要获取UUID转MD5,可是iOS7不能使用获取的UDID的接口(涉及到隐私),获取MAC地址的方式的接口在iOS7下也废弃了.眼下可能的就是获取UUID了,可是在iOS7下,UUID一个不好的地方是每次调用一次,生成的就不一样,这个会导致一旦APP卸载重装,UUID就变了.

以下,介绍一种比較方便的方法,来解决这一问题:

1.导入Security.framework

2.在github上http://github.com/soffes/sskeychain下载SSKeychain开源库,引入SSKeychain目录到你的project

- (NSString *)getIOSUUID
{
    NSString *retrieveuuid = [SSKeychain passwordForService:@"com.mohe.userinfo"account:@"uuid"];

    if ( retrieveuuid == nil || [retrieveuuid isEqualToString:@""]){
        CFUUIDRef uuid = CFUUIDCreate(NULL);
        assert(uuid != NULL);
        CFStringRef uuidStr = CFUUIDCreateString(NULL, uuid);

        retrieveuuid = [NSString stringWithFormat:@"%@", uuidStr];

        [SSKeychain setPassword:retrieveuuid forService:@"com.mohe.userinfo"account:@"uuid"];
    }
    return retrieveuuid;
}

@转换MD5格式的话能够写个类目:

#import "NSString+MD5.h"
#import <CommonCrypto/CommonDigest.h>
@implementation NSString (MD5)
- (NSString *)md5HexDigest
{
    const char *original_str = [self UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5(original_str, (int)strlen(original_str), result);
    NSMutableString *hash = [NSMutableString string];
    for (int i = 0; i < 16; i++)
        [hash appendFormat:@"%02X", result[i]];
    return [hash lowercaseString];
}
@end

@測试后发现,uuid在删除后仍会改变,后面百度了这个博客,大家能够參考:

http://www.cnblogs.com/smileEvday/p/UDID.html

时间: 2024-10-19 21:26:16

iOS7获取UUID以及转换MD5的相关文章

如何用javascript获取UUID

由于javascript是单线程的东西,所以我们放一个累加变量作为id也不会重复. 但其实javascript本身提供了可以获得唯一id的东东.还记得setTimeout()方法会返回一个唯一id用来后来清除定时器,我们不妨就借用这个id吧. function getUUID() { var id = setTimeout('0'); clearTimeout(id); return id; }; 如何用javascript获取UUID,布布扣,bubuko.com

android Uri获取真实路径转换成File的方法

Uri uri = data.getData(); String[] proj = { MediaStore.Images.Media.DATA }; Cursor actualimagecursor = managedQuery(uri,proj,null,null,null); int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); actua

linux c 网络编程:用域名获取IP地址或者用IP获取域名 网络地址转换成整型 主机字符顺序与网络字节顺序的转换

用域名获取IP地址或者用IP获取域名 #include<stdio.h> #include<sys/socket.h> #include<netdb.h> int main(int argc,char **aggv) { struct hostent *host; char hostname[]="www.163.com"; char hostname2[]="www.baidu.com"; struct in_addr in;

Oracle数据库获取uuid函数

Oracle新建系统表时,要求主键为32位uuid,猜测Oracle肯定会提供相关的函数. 翻阅相关文档,果然发现Oracle提供的函数 sys_guid() 用于获取32位uuid,简单使用为 select sys_guid() from dual; 该函数返回32位的uuid为大写,可以使用 lower(sys_guid()) 转为小写. Oracle数据库获取uuid函数

获取字符串对应的MD5值 (AL16UTF16LE)

CREATE OR REPLACE FUNCTION fn_md5_utf16le (InputString IN VARCHAR2) RETURN VARCHAR2 IS retval varchar2(50); /******************************************************* 用途: 获取字符串对应的MD5值 *******************************************************/ BEGIN retva

Ext获取uuid

Ext获取UUID 方法1:Ext.data.IdGenerator.get('uuid').generate() 方法2://创建一个uuid生成器uuidGenerator var uuidGenerator = Ext.create('Ext.data.UuidGenerator',{id:'uuidGenerator'}); //生成我们需要的uuid var uuid = uuidGenerator.generate(); //打印出来看一下 是不是你想要的?如果不是就换换其他的方法

iOS获取uuid

UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定.如此一来,每个人都可以建立不与其它人冲突的 UUID.在这样的情况下,就不需考虑数据库建立时的名称重复问题. UUID由以下几部分的组合: (1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同. (2)时钟序列. (3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得

[PHP] ubuntu下使用uuid扩展获取uuid

1.php生成uuid网上大部分是使用随机数md5截取的,很有可能会重复冲突 2.uuid的组成中最重要的一个是机器码,大部分是网卡MAC地址, php无法获取到机器码,因此不能直接使用代码来生成一个uuid 3.安装扩展可以做到,先安装uuid 和uuid-dev apt-get install uuid* 4.安装php扩展 pecl install uuid 5.配置ini文件引入扩展  extension=uuid.so 6.扩展安装成功就可以直接用了 uuid_create(1) 可以

linux shell 命令获取字符串/文件的MD5值

获取字符串的MD5值: 字符串"hello"的MD5: $ echo -n 'hello'|md5sum|cut -d ' ' -f1 得到的MD5值: 5d41402abc4b2a76b9719d911017c592 命令解释: md5sum: 显示或检查 MD5(128-bit) 校验和,若没有文件选项,或者文件处为"-",则从标准输入读取. echo -n : 不打印换行符. cut:  cut用来从标准输入或文本文件中剪切列或域.剪切文本可以将之粘贴到一个文