2016-07-11 17 views
0

Ich lerne kürzlich, wie man UUID generiert. Ich finde die Klasse TimeBasedUUIDGenerator.java in elasticsearch.Warum elasticsearch MacAddressProvider munged bytes

Ich finde es Mac-Adresse verwenden, um aktuelle Maschine zu identifizieren (MacAddressProvide.java). Aber es XOR die MAC-Adresse mit zufälligen Bytes (als Code-Schnipsel unten). Wie ich weiß, wird dies die Mac-Adresse zufällig machen und die Wahrscheinlichkeit von Konflikten erhöhen. Warum verwenden wir nicht direkt mac address?

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

Antwort

0

Der Autor des Codes ist sich auch nicht sicher.

Er sagte, der Grund möglicherweise nicht die tatsächliche Mac-Adresse des Servers aus Sicherheitsgründen offenbaren.

Ich denke, dies auch aktivieren Multi-UUID-Generatoren auf dem gleichen Server bereitstellen.

Verwandte Themen