从Web URL生成12字节哈希的算法

时间:2017-10-29 16:32:12

标签: python hash pymongo objectid hashlib

我正在抓取一些网站的特殊项目并将它们存储在MongoDB服务器中。为了避免重复项,我使用项链接的哈希值。这是我从链接生成哈希的代码:

var worksheet =
    Globals.ThisWorkbook.Worksheets.Cast<Worksheet>()
                                   .Where(w => w.Name == "worksheet_name")
                                   .ToList();

我不知道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 算法是如何工作的。这就是我的问题所在。

可以使用这种方法吗?我可以安全地假设碰撞的概率可以忽略不计吗?

更好的方法是什么?

1 个答案:

答案 0 :(得分:0)

shake_128是SHA-3哈希算法之一,它是比赛的结果,被选为下一代安全哈希算法。由于SHA-2在大多数情况下仍然足够好,因此并未得到广泛使用。由于这些算法是专为加密安全的哈希而设计的,因此对于您正在做的事情来说应该算是过高了。顾名思义,shake_128还应为您提供128位值,即16个字节,而不是12个字节。这为您提供2^128 = 3.4e38个不同的哈希值。我想你会没事的。如果有的话,我会说您可以使用更快的哈希算法,因为在这种情况下您不需要密码安全性。