Java 为什么elasticsearch MacAddressProvider使用屏蔽字节
最近我学习了如何生成UUID。我在elasticsearch中找到了这个类 我发现它使用mac地址来标识当前机器()。但它使用随机字节对mac地址进行异或(如下面的代码片段所示)。据我所知,这将使mac地址变得随机,并增加冲突的可能性。为什么我们不直接使用mac地址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
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生成器