title: BloomFilter Python
body: <p>I am new to python and trying to create a bloomFilter based on Bit torrent BEP 33.
  I have created Bloom Filter but it is not exactly what I am looking for. Here's what I need and I have not completely understood this situation. If someone here can explain ...</p>
  
  <pre><code>//fixed parameters
  
  k = 2
  
  m = 256*8
  
  //the filter
  byte[m/8] bloom   ## What is this part?
  
  function insertIP(byte[] ip) {
  
      byte[20] hash = sha1(ip)
  
      int index1 = hash[0] | hash[1] &lt;&lt; 8
      int index2 = hash[2] | hash[3] &lt;&lt; 8
  
      // truncate index to m (11 bits required)
      index1 %= m  ## ?
      index2 %= m  ## ?
  
      // set bits at index1 and index2
      bloom[index1 / 8] |= 0x01 &lt;&lt; index1 % 8   ## ??
      bloom[index2 / 8] |= 0x01 &lt;&lt; index2 % 8   ## ??
   }
  
   // insert IP 192.168.1.1 into the filter:
   insertIP(byte[4] {192,168,1,1})
  </code></pre>
  
  <p>And this is what I have created </p>
  
  <pre><code>import hashlib
  m = 2048
  def hashes(s):
      index = [0, 0]
      #for c in s:
          #o = ord(c)
      index[0] = hashlib.sha224(index[0]).hexdigest ## This needs integer hash
      index[1] = hashlib.sha224(index[1]).hexdigest ## same as above 
  
      return [x % m for x in index]
  
  class BloomFilter(object):
      def __init__(self):
          self.bitarray = [0] * m
  
      def add(self, s):
          for x in hashes(s):
              self.bitarray[x] = 1
          #print self.bitarray
      def query(self, s):
          return all(self.bitarray[x] == 1 for x in hashes(s))
  
  shazib=BloomFilter()
  shazib.add('192.168.0.1')
  print shazib.query('192.168.0.1')
  </code></pre>