elasticsearch,uuid,mac-address,Java,elasticsearch,Uuid,Mac Address" /> elasticsearch,uuid,mac-address,Java,elasticsearch,Uuid,Mac Address" />

Java 为什么elasticsearch MacAddressProvider使用屏蔽字节

Java 为什么elasticsearch MacAddressProvider使用屏蔽字节,java,elasticsearch,uuid,mac-address,Java,elasticsearch,Uuid,Mac Address,最近我学习了如何生成UUID。我在elasticsearch中找到了这个类 我发现它使用mac地址来标识当前机器()。但它使用随机字节对mac地址进行异或(如下面的代码片段所示)。据我所知,这将使mac地址变得随机,并增加冲突的可能性。为什么我们不直接使用mac地址 public static byte[] getSecureMungedAddress() { byte[] address = null; try { address = getMacAddress

最近我学习了如何生成UUID。我在elasticsearch中找到了这个类

我发现它使用mac地址来标识当前机器()。但它使用随机字节对mac地址进行异或(如下面的代码片段所示)。据我所知,这将使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;
}
公共静态字节[]getSecureMungedAddress(){
字节[]地址=空;
试一试{
地址=getMacAddress();
}捕获(SocketException e){
//地址将设置在下面
}
如果(!isValidAddress(地址)){
地址=constructDummyMulticastAddress();
}
字节[]mungedBytes=新字节[6];
SecureRandomHolder.INSTANCE.nextBytes(mungedBytes);
对于(int i=0;i<6;++i){
mungedBytes[i]^=地址[i];
}
返回mungedBytes;
}

代码作者对此也不确定

他说,出于安全考虑,可能不会透露服务器的真实mac地址

我认为这也支持在同一服务器中部署多个UUID生成器