1

現在のタイムスタンプに基づいて (デバッグ目的でコンソールに出力するために) ランダムな文字列を作成したいと思います。

たとえば、コンソールは次のように出力します。

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

誰かがこれの詳細(インポートする必要があるもの)を手伝ってくれますか、および/またはこれの改善を提案できますか?

4

3 に答える 3

6

「現在のタイムスタンプ」の意味によって異なります。を使用することもできますSystem.currentTimeMillis()が、それは必ずしも一意であるとは限りません。短期間に数回呼び出すと、同じ結果が数回得られる可能性があります。もありSystem.nanoTime()ます。

UUID.randomUUID()代わりに、すべてのビットまたは一部のサブセットを使用して、 を使用できます。(サブセットを使用する場合は、慎重に選択する必要があります。UUID のすべてのビットが等しいわけではありません。)

于 2012-07-03T19:22:29.197 に答える
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
于 2012-07-03T19:34:45.937 に答える
-8

現在のタイムスタンプに基づくキー:

npm install random-key-generator 
于 2018-01-04T08:23:38.943 に答える