def _hash(self, bytes, aggresive=False): idx = 0 ret = [] output_size = self.output_size ignore_range = self.ignore_range bsize = self.bsize total_size = len(bytes) rappend = ret.append chunk_size = idx * bsize reduce_errors = self.reduce_errors # Calculate the sum of every block while 1: chunk_size = idx * bsize # print "pre" buf = bytes[chunk_size : chunk_size + bsize] # print "post" char = modsum(buf) if reduce_errors: if char != 255 and char != 0: rappend(chr(char)) else: rappend(chr(char)) idx += 1 if chunk_size + bsize > total_size: break ret = "".join(ret) size = len(ret) / output_size buf = [] # Adjust the output to the desired output size for c in xrange(0, output_size): if aggresive: buf.append(ret[c : c + size + 1][ignore_range : ignore_range + 1]) else: buf.append(ret[c : c + size + 1][1:2]) i = 0 for x in ret[c : c + size + 1]: i += 1 if i != ignore_range: continue i = 0 buf += x break ret = "".join(buf) return base64.b64encode(ret).strip("=")[:output_size]
def _hash(self, bytes, aggresive=False): idx = 0 ret = [] output_size = self.output_size ignore_range = self.ignore_range bsize = self.bsize total_size = len(bytes) rappend = ret.append chunk_size = idx * bsize reduce_errors = self.reduce_errors # Calculate the sum of every block while 1: chunk_size = idx * bsize #print "pre" buf = bytes[chunk_size:chunk_size + bsize] #print "post" char = modsum(buf) if reduce_errors: if char != 255 and char != 0: rappend(chr(char)) else: rappend(chr(char)) idx += 1 if chunk_size + bsize > total_size: break ret = "".join(ret) size = len(ret) / output_size buf = [] # Adjust the output to the desired output size for c in xrange(0, output_size): if aggresive: buf.append(ret[c:c + size + 1][ignore_range:ignore_range + 1]) else: buf.append(ret[c:c + size + 1][1:2]) i = 0 for x in ret[c:c + size + 1]: i += 1 if i != ignore_range: continue i = 0 buf += x break ret = "".join(buf) return base64.b64encode(ret).strip("=")[:output_size]