MurmurHash3-Java和Python在长输入时返回不同的结果

时间:2018-11-21 11:30:26

标签: java python hash murmurhash

我正在使用Google开发的Java版本的MurMurHash3(google.common.hash.HashFunction和google.common.hash.Hashing)来创建 n 个独立的哈希函数(使用 n 个不同的种子)来哈希ID。这是一段代码:

    for(int i=0; i<seeds.length;i++){
        signature[i] =  hash(id, seeds[i]);
    }

    private long hash(int id, int seed){
        HashFunction hf = Hashing.murmur3_128(seed);
        long signature = hf.hashLong((long)id).asLong();

我尝试使用mmh3(https://pypi.org/project/mmh3/)在Python 2.7中复制以上代码,但是Python版本仅接受字符串作为输入(或NumPy int),并使用相同的种子返回不同的结果。这是一段代码:

def create_signature(self, id):
    v = np.int64(id)
    signature = []
    for i in range(len(self.__seeds)):
        h = mmh3.hash128(v, self.__seeds[i], signed=True)
        signature.append(h)
    return signature

在一组不同的ID上应用mmh3库,也有很多冲突(与Java版本没有冲突)。是否可以通过Python获得与Java版本相同的结果?

0 个答案:

没有答案