为单个调用设置哈希盐

时间:2016-06-23 21:06:27

标签: python python-3.x hash hashmap

我正在寻找一种方法来为函数的单个调用设置python的hash()盐。在文档中,我发现只有PYTHONHASHSEED所有调用hash()设置了盐。 但是,我需要hash在特定对象调用时始终得到相同的结果,但我不想强制整个应用程序使用相同的(可预测的)盐。

上下文:在python2中,我使用hash将键值对象对事件分类到索引存储桶中。铲斗持续存放。这反过来取值。基本上,对于我做的每一对

class PDict(object):
  def __init__(self, bucket_count, bucket_store_path):
    self._path, self.bucket_count = \
      self._fetch_or_store_metadata(bucket_store_path, bucket_count)

  def __setitem__(self, key, value):
    bucket_index = (hash(key)&0xffffffff) % self.bucket_count
    self.buckets[bucket_index][key] = value
    self._store_bucket(bucket_index)

  def __getitem__(self, key):
    bucket_index = (hash(key)&0xffffffff) % self.bucket_count
    return self._fetch_bucket(bucket_index)[key]

这需要hash在解释器调用期间始终为每个实例获取相同的结果。

1 个答案:

答案 0 :(得分:1)

import hashlib
def getHash(name):
   m = hashlib.md5()
   m.update(name)
   return m.hexdigest()