【问题标题】:UUID v1 Objective-C implementationUUID v1 Objective-C 实现
【发布时间】:2018-07-05 13:53:41
【问题描述】:

我想在我的 iOS 应用中实现 UUID v1。 我知道它由 Mac 地址和时间戳组成,如中所述 http://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_.28MAC_address.29

这个 V1 是否有任何基于 CFUUID 函数的 Objective-c 实现?

我已经有了mac地址和时间戳。

Wikipedia 上的 UUID v1 描述:“UUID 的原始(版本 1)生成方案是将 UUID 版本与生成 UUID 的计算机的 MAC 地址连接起来,数字为 100-自西方采用公历以来的纳秒间隔"

http://www.ietf.org/rfc/rfc4122.txt也有规定,不过好像还需要时间去实现。

我找到了这个链接:http://www.famkruithof.net/guid-uuid-timebased.html,他对创建 v1 UUID 的步骤有一个简单的解释。在我自己实现之前,有没有现成的实现?

【问题讨论】:

  • 我想知道为什么CFUUID 不够好。
  • 刚刚编辑了问题。我说的是 UUID 的第 1 版,我们需要将 Mac 地址和时间戳连接起来,但实际上不太清楚要执行哪些步骤。
  • @H2CO3 V1 of UUID 通常用于当您想要既独特又可以追溯到用户的东西时。 IE。它特别不保证隐私,这正是它在很大程度上被放弃的原因。

标签: ios objective-c uuid


【解决方案1】:

我认为使用框架函数是常见的行为。那就是使用 CFUUID。例如:

+(NSString*)get {
    NSString *deviceID = [[NSUserDefaults standardUserDefaults] objectForKey:@"DeviceID"];
    if (!deviceID) {
        CFUUIDRef theUUID = CFUUIDCreate(NULL);
        CFStringRef string = CFUUIDCreateString(NULL, theUUID);
        CFRelease(theUUID);
        deviceID = (NSString*)string;
        [[NSUserDefaults standardUserDefaults] setValue:deviceID forKey:@"DeviceID"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }

    return deviceID;
}

【讨论】:

  • 感谢您的回复,但它是否与 UUID 的版本 1 匹配。 “UUID 的原始(版本 1)生成方案是将 UUID 版本与生成 UUID 的计算机的 MAC 地址以及自西方采用公历以来的 100 纳秒间隔数连接起来”
  • 来自 CFUUID 类参考:“UUID(通用唯一标识符),也称为 GUID(全局唯一标识符)或 IID(接口标识符),是保证唯一的 128 位值。一个 UUID通过将生成它的计算机的唯一值(通常是以太网硬件地址)和表示自 1582 年 10 月 15 日 00:00:00 以来 100 纳秒间隔数的值组合起来,在空间和时间上都是唯一的。”所以我认为这就是你想要的。
【解决方案2】:

请试试这个。可能对你有帮助

 +(NSString*) Create_UDID
 {
      CFUUIDRef theUUID = CFUUIDCreate(NULL);
      CFStringRef string = CFUUIDCreateString(NULL, theUUID);
      CFRelease(theUUID);

      NSString* strString = [NSString stringWithFormat:@"%@", string];
      NSString *strValue = [strString stringByReplacingOccurrencesOfString:@"-"withString:@""];

    if (strValue == nil) {
         strValue = @"";
     }

      return strValue;
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2011-05-29
    • 2017-02-12
    • 1970-01-01
    相关资源
    最近更新 更多