`
dayn9
  • 浏览: 6302 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

【转】GUID

 
阅读更多
GUID(Globally Unique IDentifier) 也称作 UUID(Universally Unique IDentifier).

特点:

GUID/UUID是通过特定算法产生的一个二进制长度为128位的数字,

在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同,

在公元3400年以前产生的UUID/GUID与任何其他产生过的UUIDs/GUIDs都不相同。

在需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。

GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。

用途:

标识特定的组件、程序、文件、数据、用户等,并可以在网络中使用。

格式:
UUID 字符串格式可以由下面的EBNF语言来描述:

UUID = <time_low> "-" <time_mid> "-"
<time_high_and_version> "-"
<clock_seq_and_reserved>
<clock_seq_low> "-" <node>
time_low = 4*<hexOctet>
time_mid = 2*<hexOctet>
time_high_and_version = 2*<hexOctet>
clock_seq_and_reserved = <hexOctet>
clock_seq_low = <hexOctet>
node = 6*<hexOctet>
hexOctet = <hexDigit> <hexDigit>
hexDigit =
"0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
| "a" | "b" | "c" | "d" | "e" | "f"
| "A" | "B" | "C" | "D" | "E" | "F"

例如:f81d4fae-7dec-11d0-a765-00a0c91e6bf6

算法:

GUID的算法并不唯一,可以由多种方法来生成。

GUID生成器除了标识不同的时间,还要唯一地标识不同的地点,这可以使用网卡的48位的IEEE 802地址。

GUID的128位可以分为16个字节,前8个字节是时间和版本号,中间2个字节是UUID变体和时钟序数,后6个字节标识地点。


0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| time_low |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| time_mid | time_hi_and_version |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|clk_seq_hi_res | clk_seq_low | node (0-1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| node (2-5) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



UUID变体位于第9个字节的前3位,有4种定义:

Msb0 Msb1 Msb2 Description

0 - - Reserved, NCS backward compatibility.

1 0 - The variant specified in this document.

1 1 0 Reserved, Microsoft Corporation backward
compatibility

1 1 1 Reserved for future definition.

版本号位于第7个字节的前4位:

Msb0 Msb1 Msb2 Msb3 Version Description

0 0 0 1 1 The time-based version
specified in this
document.

0 0 1 0 2 Reserved for DCE
Security version, with
embedded POSIX UIDs.

0 0 1 1 3 The name-based version
specified in this
document

0 1 0 0 4 The randomly or pseudo-
randomly generated
version specified in
this document

时间的标识(Timestamp)

UUID version 1, UTC时间从 00:00:00.00, 15 October 1582开始以100纳秒的计数.
没有UTC时间时,也可以使用当地时间,只要在系统中保持一贯就行,这并不推荐,
当地时间与UTC时间只是一个时差的问题。
UTC - Coordinated Universal Time

UUID version 3, 由名字空间产生一个60位数.

UUID version 4, 随机地或伪随机地产生一个60位数.

时钟序数 Clock sequence

UUID version 1, 时钟序数用来避免钟表被调慢后产生重复。比如网卡移到别的机器上,或者断电等。
如果先前的时钟序数已知,加1即可,否则随机产生,更换随机数种子以减小重复的可能性。

UUID version 3, 由名字空间产生一个14位数.

地点的标识(node)

UUID version 1, 采用主机的IEEE 地址,系统有多个IEEE 802地址时,任取一个;

没有IEEE地址时,使随机数或伪随机数并保证与网卡上地址不同(见 section 4).

UUID version 3, 由名字空间产生一个48位数.

UUID version 4, 随机地或伪随机地产生一个48位数.

参考文献:
http://www.ics.uci.edu/~ejw/authoring/uuid-guid/draft-leach-uuids-guids-01.txt
分享到:
评论

相关推荐

    GUID生成器,双击启动即可使用

    生成GUID,生成不带-,不带{}的GUID,开发的非常帮助小工具!

    Guid转换为oracle存储格式

    将Guid的格式转换为oracle的识别的格式

    易语言GUID批量生成器

    易语言GUID批量生成器源码,GUID批量生成器,生成新的GUID,验证,生成GUID并加入列表,后续处理,CoCreateGuid

    java代码生成GUID

    纯java代码生成唯一标示GUID, 转换成标准的GUID码例如: C2FEEEAC-CFCD-11D1-8B05-00600806D9B6

    生成GUID的小程式

    生成GUID的小程式,感觉添加数据库的数据很方便,大家一起使用啦……

    C# Guid.NewGuid获得随机数

    根据GUID获得种子,然后获得随机数,这个是完全随机的

    GUID2ClsName

    GUID转换成可辨别的程序的名字, 挺简单的一个程序,不用再为看打一个GUID无法知道其是啥程序而烦恼

    python 根据时间来生成唯一的字符串方法

    我们很多时候,特别是在生成任务的时候,都需要一个唯一标识字符串来标识这个任务,比较常用的有生成uuid或者通过时间来生成。uuid的话可以直接通过uuid模块来生成。如果是时间的话,可以这么写: ...

    react-base64-guids:具有base64转换的URL友好GUID

    React Base64 GUID 在CodePen.io上创建的笔。 原始网址: : 。

    RD-AD

    它们允许轻松读取事件,转换GUID并通过操作摘要得到通知,使用白名单可排除对特定服务器或帐户的检测。 您可以对其进行编辑以发送邮件,阻止或禁用帐户,..... #关于 : request-detect AD:帮助检测和监视AD,以...

    betterguid:Go软件包以生成具有良好属性的guid(全局唯一ID)

    这是Go软件包,用于生成具有良好属性的guid(全局唯一ID)。 用法: import "github.com/kjk/betterguid" id := betterguid . New () fmt . Printf ( "guid: '%s' \n " , id ) 生成的Guid具有良好的属性: 它们...

    mysql数据库转瀚高数据库所需要的函数列表

    1、mysql数据库转国产化瀚高数据库; 2、有些函数在瀚高数据库中不存在,需要添加自定义函数。

    Convertible Securities An Investors Guid from Deutsche Bank

    Deutsche Bank的一篇资料,介绍可转换债券相关知识的入门材料,一共79页

    易语言图标句柄转图片

    易语言图标句柄转图片源码,图标句柄转图片,Dll入口函数,GetFileIcon,GetEncoderClsid,GetStreamFromHIcon,Clsid2String,Guid2String,W2A,A2W,SHGetFileInfo,GdipGetImageEncodersSize,GdipGetImageEncoders,...

    易语言GDIPlus图像转换

    易语言GDIPlus图像转换源码,GDIPlus图像转换,AnsiToUnicode,UnicodeToAnsi,GUID到文本,Gdiplus_开启,Gdiplus_关闭,Gdiplus_取错误文本,Gdiplus_枚举图像编解码器,创建,释放,取尺寸,取出字节集,取字节流指针,取内存...

    易语言炫舞源码转换模式专用

    转换模式专用fgdsu9guid高交会馆后感觉很久很久即可看很繁华过后

    QT4运行库-自编译版

    可以备份及还原分区表,重建MBR主引导记录,清除保留扇区,转换分区表类型为GUID/MBR格式,可以将动态磁盘转换为基本磁盘,检测与修复 硬盘中存在的坏道。复位坏扇区记录,快速分区或删除指定分区,新建或打开虚拟...

    Ax函数大全

    任意数据类型转换成Date类型 任意数据类型转换成Enum...任意数据类型转换成Guid类型 任意数据类型转换成Int类型 任意数据类型转换成Int64类型 任意数据类型转换成Real类型 任意数据类型转换成String类型 ........等等

    Uni.Extensions:用于动态、ExpandoObject、IEnumerable、IDictionary、DataTable 等的转换器助手

    ###如何安装它? 将UniExtensions C#.NET 代码文件拖放到您的项目中并根据需要进行更改,或者您可以从NuGet Galery... Guid guid_AsValid = " 63ba52b5-1dd5-4b26-ba27-83f62c3d7e48 " . To &lt; Guid&gt;(); // As you can s

    PasswdGen.exe

    密码生成、guid、拼音转换小工具

Global site tag (gtag.js) - Google Analytics