请问java中能把guidjava数字转换为字符串成字符串吗

版权声明:本文为博主原创文章转载请务必注明作者与原文链接。 /jingerppp/article/details/

最近在做加密工作需要拿到一个随机的32位HASH 值,32*4=128bits这里碰到了UUID,借此机会总结一下方便你我他!

Identifier)嘚缩写,是一种软件建构的标准亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的是让分布式系统中的所有元素,都能有唯一的辨识信息而不需要通过中央控制端来做辨识信息的指定。如此一来每个人都可以创建不与其它人冲突的UUID。在这样的情况下就不需考虑数据库创建时的名称重复问题。目前最广泛应用的UUID是微软公司的(GUID),而其他重要的应用则有Linux

UUID是由一组32位数的16进制数字所构成,是故UUID理论上的总数为16^32=2^128约等于3.4 x 10^38。也就是说若每纳秒产生1兆个UUID要花100亿年才会将所有UUID用完。

随机产生的UUID(例如说由java.util.UUID类别产生的)的128個比特中有122个比特是随机产生,4个比特在此版本('Randomly generated UUID')被使用还有2个在其变体('Leach-Salz')中被使用。利用可计算出两笔UUID拥有相同值的机率约為:

以下是以x=2^122计算出n笔GUID后产生碰撞的机率:

与被陨石击中的机率比较的话,已知一个人每年被陨石击中的机率估计为170亿分之1也就是说机率大约是0. (6 x 10^-11),等同于在一年内置立数十兆笔GUID并发生一次重复换句话说,每秒产生10亿笔UUID100年后只产生一次重复的机率是50%。如果地球上每个人嘟各有6亿笔GUID发生一次重复的机率是50%。

产生重复GUID并造成错误的情况非常低是故大可不必考虑此问题。

机率也与随机数产生器的质量有关若要避免重复机率提高,必须要使用基于密码学上的假随机数产生器来生成值才行

 












 
 

 
详细看代码中的注释,不同取值代表不同的意义
 

 
 

 
 

 
通过代码我们确定了UUID 的格式:
 
跟1.3 中说的对应,分别代表:

如果要获取完成的字符串可以这样:
 


我要回帖

更多关于 java数字转换为字符串 的文章

 

随机推荐