您的位置:首页 > 编程语言 > Java开发

Java产生唯一的随机数

2016-03-28 19:44 369 查看


Java产生唯一的随机数

说起唯一的随机数,可能很容易想到java.util.UUID,如下,可以产生32位长度的字符串。

String str = UUID.randomUUID().toString().replaceAll("-", "");


但是这样并不是一定没问题的,单机多线程的情况下也可能出现重复的情况。

UUID按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得)。

为确保产生的字符串唯一,可在uuid后加一个随机数,如果再能加唯一用户名,电话xxx的就更加万无一失了。

String str = UUID.randomUUID().toString().replaceAll("-", "") + new Random().nextLong();
// 产生的字符串太长,浪费存储,再进行MD5
// 可以使用apache的org.apache.commons.codec.digest.DigestUtils
// 也可以是使用java.security.MessageDigest进行加密
// 注意返回的是长度为16的byte数组,使用Hex转换成32的char数组,在转成字符串
String uuid = new String(Hex.encodeHex(DigestUtils.md5(str)));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: