我正在尝试在Java中实现Bloom过滤器,并且一种哈希类型需要使用消息摘要。在add方法期间,我创建的其他哈希值用于将位集的索引设置为true。我需要使用消息摘要创建哈希以实现相同的目标,但是我找不到返回int的方法。我的添加方法并尝试使用哈希:
public void add(String element) {
int index = Math.abs(element.hashCode())%size;
int index1 = myHash(element);
// int index2 = mdHash(element);
b.set(index, true);
b.set(index1, true);
}
public int mdHash(String message) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(message.getBytes());
byte[] digest = md.digest();
return ;
}
如何使用摘要创建哈希,也可以将索引设置为true?
对于Bloom过滤器,通常不需要使用SHA-256:它很慢。相反,我会使用例如杂音哈希。或者只是hashCode(),然后使用another hash生成64哈希。
然后,从该哈希中,您可以根据需要为Bloom过滤器生成许多数字,例如,如下所示(另请参见fastfilter_java project:]
public void add(long key) {
long hash = Hash.hash64(key, seed);
long a = (hash >>> 32) | (hash << 32);
long b = hash;
for (int i = 0; i < k; i++) {
data[Hash.reduce((int) (a >>> 32), arraySize)] |= 1L << a;
a += b;
}
}