我正在抓取一些网站的特殊项目,并存储在MongoDB服务器。为了避免重复的项目,我使用项目链接的哈希值。以下是我从链接生成哈希的代码:
import hashlib
from bson.objectid import ObjectId
def gen_objectid(link):
"""Generates objectid from given link"""
return ObjectId(hashlib.shake_128(str(link).encode('utf-8')).digest(12))
# end def
我不知道shake_128
算法是如何工作的。这就是我的问题所在。在
用这种方法行吗?我能安全地假设碰撞的概率可以忽略不计吗?在
做这件事最好的方法是什么?在
shake_128
是SHA-3哈希算法之一,作为下一代安全哈希算法竞赛的结果。由于SHA-2在大多数情况下仍然被认为是足够好的,所以它们没有被广泛使用。由于这些算法是为加密安全的哈希而设计的,所以对于您正在做的事情来说,这应该是一种过度杀戮。而且shake_128
,顾名思义,应该给您一个128位的值,即16字节,而不是12字节。这将给您2^128 = 3.4e38
不同的哈希值。我想你会没事的。如果有的话,我想说你可以使用一个更快的哈希算法,因为在这种情况下你不需要加密安全性。在相关问题 更多 >
编程相关推荐