Пример #1
0
 def add(self, item):
     '''Add an item to the filter'''
     for i in range(self.function_count):
         seed = i * BIP37_CONSTANT + self.tweak
         hash = murmur3(item, seed=seed)
         bit = hash % len(self.bit_field)
         self.bit_field[bit] = 1
Пример #2
0
 def add(self, item):
     # We hash function_count number of times.
     for i in range(self.function_count):
         # This is the seed formula - page 215.
         seed = i * BIP37_CONSTANT + self.tweak
         # murmur3 returns a number, so we don't have to convert to an integer.
         h = murmur3(item, seed=seed)
         bit = h % len(self.bit_field)
         self.bit_field[bit] = 1
Пример #3
0
    def add(self, item):
        '''Add an item to the filter'''
        i = 0
        for i in range(self.function_count):
#        while i < self.function_count:
            dat_spec_seed = i * BIP37_CONSTANT + self.tweak
            h = murmur3(item, seed=dat_spec_seed)
            bit = h % (self.size * 8)
            self.bit_field[bit] = 1
Пример #4
0
 def add(self, item):
     '''Add an item to the filter'''
     # iterate self.function_count number of times
     for i in range(self.function_count):
         # BIP0037 spec seed is i*BIP37_CONSTANT + self.tweak
         seed = i * BIP37_CONSTANT + self.tweak
         # get the murmur3 hash given that seed
         h = murmur3(item, seed=seed)
         # set the bit at the hash mod the bitfield size (self.size*8)
         self.bit_field[h % (self.size * 8)] = 1
Пример #5
0
 def add(self, item):
     '''Add an item to the filter'''
     # iterate self.function_count number of times
     for i in range(self.function_count):
         seed = i * BIP37_CONSTANT + tweak
         h = murmur3(item, seed=seed)
         bit = h % (self.size * 8)
         self.bit_field[bit] = 1
         # BIP0037 spec seed is i*BIP37_CONSTANT + self.tweak
         # get the murmur3 hash given that seed
         # set the bit at the hash mod the bitfield size (self.size*8)
         # set the bit field at bit to be 1
     raise NotImplementedError
Пример #6
0
 def test_example_4(self):
     field_size = 2
     num_functions = 2
     tweak = 42
     bit_field_size = field_size * 8
     bit_field = [0] * bit_field_size
     for phrase in (b'hello world', b'goodbye'):
         for i in range(num_functions):
             seed = i * BIP37_CONSTANT + tweak
             h = murmur3(phrase, seed=seed)
             bit = h % bit_field_size
             bit_field[bit] = 1
     self.assertEqual(bit_field,
                      [0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0])
Пример #7
0
 def test_exercise_1(self):
     field_size = 10
     function_count = 5
     tweak = 99
     items = (b'Hello World', b'Goodbye!')
     bit_field_size = field_size * 8
     bit_field = [0] * bit_field_size
     for item in items:
         for i in range(function_count):
             seed = i * BIP37_CONSTANT + tweak
             h = murmur3(item, seed=seed)
             bit = h % bit_field_size
             bit_field[bit] = 1
     self.assertEqual(
         bit_field_to_bytes(bit_field).hex(), '4000600a080000010940')
Пример #8
0
def add(self, item):
    for i in range(self.function_count):
        seed = i * BIP37_CONSTANT + self.tweak
        h = murmur3(item, seed=seed)
        bit = h % (self.size * 8)
        self.bit_field[bit] = 1
Пример #9
0
from helper import murmur3
from bloomfilter import BIP37_CONSTANT
field_size = 10
num_functions = 5
tweak = 99
bit_field_size = field_size * 8
bit_field = [0] * bit_field_size
for phrase in (b'Hello World', b'Goodbye!'):
    for i in range(num_functions):
        seed = i * BIP37_CONSTANT + tweak
        h = murmur3(phrase, seed=seed)
        bit = h % bit_field_size
        bit_field[bit] = 1
print(bit_field)