处理python hash()碰撞

时间:2017-10-24 14:15:05

标签: python hash uniqueidentifier hash-collision

我创建了一个程序来获取用户预定的唯一标识符,对其进行哈希处理,并将其存储在映射到用户名称的字典中。我稍后收到唯一标识符,重新发送它,并可以查找用户的名字。

我遇到的问题是,个人的9位唯一ID哈希()与其他人的号码相同。在收集了大约40个用户的数据后发生了这种情况。

这是否有共同的工作?我认为这与使用散列映射不同,因为如果我为散列ID创建一个存储桶,我将无法分辨用户是谁(无论是第一个项目还是第二个)。

编辑:

id = raw_input()
hashed_id = hash(id)
if not dictionary.has_key(hashed_id):
    name = raw_input()
    dictionary[hashed_id] = name
 check_in_user(dictionary[hashed_id])

1 个答案:

答案 0 :(得分:0)

我从未见过hash()用于此目的。 hash()应该用作数据结构,作为整个对象的简写,例如字典内部实现中的键。

我建议您为用户使用UUID(通用唯一标识符)。

import uuid
uuid.uuid4()
# UUID('d36b850c-2433-42c6-9252-6371ea3d33c2')

你将very hard pressed从UUID中获得冲突。