首页 > 编程知识 正文

uuid生成方式,自动生成uuid

时间:2023-05-06 13:24:41 阅读:281307 作者:3062

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等哈希算法得到。


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。