在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