在Java中,如何使用当前时间戳作为salt创建随机字符串?

在Java中,如何使用当前时间戳作为salt创建随机字符串?,java,random,timestamp,Java,Random,Timestamp,我想根据当前时间戳创建一个随机字符串(为了调试目的输出到控制台) 例如,控制台将输出: Setting up browser [123456]... Getting configuration [758493]... Completed: [758493]. Completed: [123456]. 这里的123456和758493是我试图生成的随机字符串 以下是我认为它可以如何工作的伪代码: private String random(int len){ long ts = getCurre

我想根据当前时间戳创建一个随机字符串(为了调试目的输出到控制台)

例如,控制台将输出:

Setting up browser [123456]...
Getting configuration [758493]...
Completed: [758493].
Completed: [123456].
这里的
123456
758493
是我试图生成的随机字符串

以下是我认为它可以如何工作的伪代码:

private String random(int len){
long ts = getCurrentTimestamp;
String value = createRandom(len, ts); 
    //len is the length of the randomString
    //and ts is the salt
return value;
}

是否有人可以帮助您了解这方面的详细信息(需要导入哪些内容)和/或对此提出改进建议?

这取决于您所说的“当前时间戳”是什么意思。您可以使用,但这不一定是唯一的-如果您在短时间内多次调用它,您可能会多次得到相同的结果。还有


作为替代方案,您可以使用,或者使用所有位,或者使用某些子集。(如果您决定使用子集,您应该仔细选择它们。UUID中并非所有位都相等。)

System.nanoTime()
中选择MD5怎么样

MessageDigest实例=MessageDigest.getInstance(“MD5”);
byte[]messageDigest=instance.digest(String.valueOf(System.nanoTime()).getBytes());
StringBuilder hexString=新的StringBuilder();
for(int i=0;i
4次调用的结果:

bbf9123ac9335581535350e863236800 67fef4376523ae683b2e1d54fd97df53 ef1e747dc916584baed73a0921410216 8c8bc839bf739210a3875966430879de BBF9123AC93355815350E863236800 67fef4376523ae683b2e1d54fd97df53 ef1e747dc916584baed73a0921410216 8C8BC839BF739210A387596430879DE
基于当前时间戳的密钥:

npm install random-key-generator 

我喜欢这个系统。您对此有何看法:
Long.toString(System.nanoTime()).substring(9)?System.nanoTime返回一个16位数字<代码>子字符串(9)
切掉前9个数字(它们都是相同的,给了我更多的随机外观,但有意义的剩余数字)。从
1145968877460237
1145968878065213
7460237
8065213
。谢谢Jon的建议!你能看到我在@Spaeth的答案下的其他评论吗?请告诉我你对此有何看法?@rishimaharaj:这似乎是合理的,但我想我个人可能会选择
UUID
。注意这个问题上的Java标签。
npm install random-key-generator