更好地了解Kademlia的XOR整数指标

时间:2018-11-06 06:15:12

标签: go distributed p2p xor kademlia

我试图更好地掌握Kademlia的XOR距离度量标准,因此我编写了一个小型虚拟程序来尝试并更好地理解。在这里,我也不使用160位数字作为密钥,而是使用一些用户标识符的sha256哈希。

这是我的xor距离函数。这或多或少是正确的吗?我要对每个字节进行XOR运算-将其附加到缓冲区rawBytes并将该字节缓冲区转换为整数。

func XorDistance(node string, otherNode string) uint64 {
    var rawBytes [32]byte
    for i := 0; i < 32; i++ {
        rawBytes[i] = node[i] ^ otherNode[i]
    }
    distance, _ := binary.Uvarint(rawBytes[:])
    return distance
}

1 个答案:

答案 0 :(得分:1)

这是不正确的,因为

您必须使用math/big软件包才能进行此类使用。这是我对您的代码段的修订版本:

func xorDistance(node string, otherNode string) *big.Int {
    var rawBytes [32]byte
    for i := 0; i < 32; i++ {
        rawBytes[i] = node[i] ^ otherNode[i]
    }
    return big.NewInt(0).SetBytes(rawBytes[:])
}