源码
/**
* 产生一个length为长度字符串,每一位是一个Hex。
* @param length
* @return
*/
public static String getRandomHexString(int length) {
SecureRandom secureRandom = Holder.numberGenerator;
int size = length / 2;
byte[] randomBytes = new byte[size];
secureRandom.nextBytes(randomBytes);
//字节数组转16进制并转化为小写
return DatatypeConverter.printHexBinary(randomBytes).toLowerCase();
}
/*
* The random number generator used by this class to create random
* based UUIDs. In a holder class to defer initialization until needed.
*/
private static class Holder {
static final SecureRandom numberGenerator = new SecureRandom();
}
测试代码:
for(int i=0;i<5;i++){
System.out.println(getRandomHexString(10));
}
System.out.println();
for(int i=0;i<5;i++){
System.out.println(getRandomHexString(10));
}
运行结果:
02aec4facb
2e9e3617e5
7620df4774
0a0ce56657
654d6b4bf2
42d9f18dcc
3c65114944
68f70b2751
d4ba485578
fc8563ab9a