UUID生成方法

标签: LINUX 分布式计算 应用 软件 架构
161人阅读 评论(0) 收藏 举报
分类:
UUID生成方法有时间、名称、随机数三种策略
基于时间的UUID生成算法(版本1)
确定UTC时间(60位 Time)和时间序列值(14位 ClockSequence);
设置TimeLow(对应Time的31-0位);
设置TimeMid(对应Time的47-32位);
设置VersionAndTimeHigh(4位版本号及Time的59-48位);
设置VariantAndClockSeqHigh(变体位及对应ClockSequence的13-8位);
设置ClockSeqLow(对应ClockSequence的7-0位);
设置Node(对应48位MAC地址)。

 基于名称的UUID生成算法(版本3和版本5)
针对相应的命名空间(如DNS、URL、OID等)分配一个UUID作为所有UUID的命名空间标识;
将名称转换为字节数列;
使用MD5或SHA-1算法对与名称关联的命名空间标识进行计算,产生16字节哈希结果;
设置TimeLow(对应哈希值的3-0字节);
设置TimeMid(对应哈希值的5-4字节);
设置VersionAndTimeHigh(对应哈希值的7-6字节),以相应版本号重写对应位(第9字节的高4位);
设置VariantAndClockSeqHigh(对应哈希值的第8字节),重写变体对应位(第7字节的高2位,本标准对应值为10);
设置ClockSeqLow(对应哈希值的第9字节);
设置Node(对应哈希值的15-10字节)。
由于SHA-1哈希结果为160位(20字节),本算法中,需要将FIPS PUB 180-2中的SHA-1算法的哈希值字节顺序反转(字节内顺序不变),UUID使用其15-0字节,19-16字节被丢弃
 

基于随机数的UUID生成算法(版本4)
设置VariantAndClockSeqHigh的变体位值为10;
设置VersionAndTimeHigh的4位版本号;
设置剩余位为随机值。
本文中讨论的密码学随机数,主要根据系统可以提供的信息(内存、硬盘、句柄、程序运行的线程、进程、句柄、堆栈等),利用SHA-1等哈希算法得到。



查看评论

巧用UUID生成随机数或随机字符串

--前3条数据 use Test go select top 3 R1 = RAND(),R2 = RAND() From sys.objects --随机生成区间 -...
  • hbtianmimi
  • hbtianmimi
  • 2012-12-18 17:19:37
  • 1153

java生成UUID的方法总结

java生成UUID的方法总结前言:我们开发的时候,数据库表总会有一个主键,以前我们可能会使用自增的数字作为主键。这样做去确实查询的时候比较快,但是在做系统集成或者数据迁移的的时候就麻烦了。这是id就...
  • xinghuo0007
  • xinghuo0007
  • 2017-06-05 16:46:34
  • 3469

JS生成 UUID的方法

因为前短时间做了一些简单的H5的开发,其中遇到了这个方法所以记一下: function uuid() { var s = []; var hexDigits = "012345678...
  • sp_wei
  • sp_wei
  • 2017-06-18 17:53:16
  • 690

php生成uuid 工具方法

/** * 生成uuid * @copyright [chenghuan] * @license [license] * @version [versi...
  • huanleyan
  • huanleyan
  • 2016-11-03 16:29:22
  • 777

UUID生成方法总结

UID简介 摘自维基百科 通用唯一识别码(英语:Universally Unique Identifier,简称UUID)是一种软件建构的标准,亦为自由软件基金会组织在分散式计算环境领...
  • u014338577
  • u014338577
  • 2016-03-30 16:06:08
  • 1460

用javascript生成UUID

有时需要在前端生成UUID,可以在jsp中引用内容如下的文件UUID.js。  使用时直接用new生成即可  Js代码   var uuidId = new UUID()...
  • wyc2410
  • wyc2410
  • 2013-09-06 18:04:46
  • 3416

[C++] 跨平台的生成GUID方法

string GetGUID() { char szGUID[BUFF_SIZE]; #ifdef WIN32 GUID uuid; CoCreateGuid(...
  • hf81970
  • hf81970
  • 2013-10-29 14:54:59
  • 1609

java代码生成UUID以及在线UUID生成器

1.UUID 简介      UUID含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准,也是被开源软件基金会 (Open Softwa...
  • qq_35500433
  • qq_35500433
  • 2017-11-28 16:11:05
  • 5073

php生成UUID唯一序列的代码示例

/** * Generates an UUID * * @author Anis uddin Ahmad * @param string an optio...
  • china_skag
  • china_skag
  • 2012-02-27 13:43:41
  • 16175

iOS 生成随机的UUID

iOS 生成UUID + (NSString *)uuidString { CFUUIDRef uuid_ref = CFUUIDCreate(NULL); CFStri...
  • wanna_dance
  • wanna_dance
  • 2016-08-08 20:22:41
  • 1612
    个人资料
    持之以恒
    等级:
    访问量: 3204
    积分: 256
    排名: 30万+
    文章存档