diff --git a/src/probabilistic/BitVector.cc b/src/probabilistic/BitVector.cc index f820e6df27..e8c2b2f80e 100644 --- a/src/probabilistic/BitVector.cc +++ b/src/probabilistic/BitVector.cc @@ -1,10 +1,12 @@ // See the file "COPYING" in the main distribution directory for copyright. -#include "BitVector.h" - +#include #include #include + +#include "BitVector.h" #include "Serializer.h" +#include "digest.h" using namespace probabilistic; @@ -494,10 +496,15 @@ size_t BitVector::Hash() const { size_t hash = 0; - for ( size_type i = 0; i < Blocks(); ++i ) - hash += bits[i]; + u_char buf[SHA256_DIGEST_LENGTH]; + SHA256_CTX ctx; + sha256_init(&ctx); - return hash; + for ( size_type i = 0; i < Blocks(); ++i ) + sha256_update(&ctx, &bits[i], sizeof(bits[i])); + + sha256_final(&ctx, buf); + return *reinterpret_cast(buf); // Use the first bytes as seed. } BitVector::size_type BitVector::lowest_bit(block_type block) diff --git a/testing/btest/Baseline/bifs.bloomfilter-seed/output b/testing/btest/Baseline/bifs.bloomfilter-seed/output index 53e0f583f2..533085900f 100644 --- a/testing/btest/Baseline/bifs.bloomfilter-seed/output +++ b/testing/btest/Baseline/bifs.bloomfilter-seed/output @@ -1,8 +1,8 @@ -bf1, global_seed, 1 -bf2, global_seed, 5 -bf3, my_seed, 5 -bf4, my_seed, 6 -bf1, global_seed, 5 -bf2, global_seed, 6 -bf3, my_seed, 5 -bf4, my_seed, 6 +bf1, global_seed, 11979365913534242684 +bf2, global_seed, 12550100962110750449 +bf3, my_seed, 12550100962110750449 +bf4, my_seed, 945716460325754659 +bf1, global_seed, 12550100962110750449 +bf2, global_seed, 945716460325754659 +bf3, my_seed, 12550100962110750449 +bf4, my_seed, 945716460325754659