如何创建使用当前时间戳作为Java中的盐一个随机字符串?(How to create a rando

2019-07-30 05:31发布

我想基于关闭当前时间戳来创建一个随机字符串(输出到控制台用于调试目的)。

例如,控制台将输出:

Setting up browser [123456]...
Getting configuration [758493]...
Completed: [758493].
Completed: [123456].

在这里, 123456758493是我试图生成随机字符串。

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

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;
}

任何人都可以用这个细节帮助(什么需要进口),和/或可能提出改进呢?

Answer 1:

那么这取决于你所说的“当前时间戳”是什么。 你可以使用System.currentTimeMillis()但并不一定是唯一的 -如果你把它几次在短期内,你可能会得到同样的结果几次。 还有System.nanoTime()

作为替代方案,你可以使用UUID.randomUUID()或者使用的所有位或某些子集。 (如果你决定使用一个子集,你应该仔细选择他们。不要在一个UUID所有位都是平等的。)



Answer 2:

如何MD5从System.nanoTime()

MessageDigest instance = MessageDigest.getInstance("MD5");
byte[] messageDigest = instance.digest(String.valueOf(System.nanoTime()).getBytes());
StringBuilder hexString = new StringBuilder();
for (int i = 0; i < messageDigest.length; i++) {
    String hex = Integer.toHexString(0xFF & messageDigest[i]);
    if (hex.length() == 1) {
        // could use a for loop, but we're only dealing with a single
        // byte
        hexString.append('0');
    }
    hexString.append(hex);
}
return hexString.toString();

结果4个调用:

bbf9123ac9335581535350e863236800
67fef4376523ae683b2e1d54fd97df53
ef1e747dc916584baed73a0921410216
8c8bc839bf739210a3875966430879de


Answer 3:

基于密钥对当前的时间戳:

npm install random-key-generator 


文章来源: How to create a random String using the current timestamp as the salt in Java?