2016-07-11 4 views
0

最近、私はUUIDを生成する方法を学びます。私はelasticsearchでクラスTimeBasedUUIDGenerator.javaを見つける。elasticsearch MacAddressProviderが武装したバイトを使用する理由

私はそれが現在のマシン(MacAddressProvide.java)を識別するためにMACアドレスを使用することがわかります。しかし、それはXORのMACアドレスランダムバイト(以下のコードスニペットとして)。私が知っているように、これはランダムにマックアドレスを作成し、競合の可能性を高めるでしょう。なぜ我々は直接MACアドレスを使用しないのですか?

public static byte[] getSecureMungedAddress() { 
    byte[] address = null; 
    try { 
     address = getMacAddress(); 
    } catch (SocketException e) { 
     // address will be set below 
    } 

    if (!isValidAddress(address)) { 
     address = constructDummyMulticastAddress(); 
    } 

    byte[] mungedBytes = new byte[6]; 
    SecureRandomHolder.INSTANCE.nextBytes(mungedBytes); 
    for (int i = 0; i < 6; ++i) { 
     mungedBytes[i] ^= address[i]; 
    } 

    return mungedBytes; 
} 

答えて

0

コード作成者はこれについてもわかりません。

彼は、セキュリティ上の懸念からサーバーの実際のMACアドレスが明らかにならない可能性があると述べました。

これは、同じサーバーに複数のUUIDジェネレータを展開することも可能にします。

関連する問題