我在Python中有一个字符串。我使用hashlib
计算该字符串的SHA1哈希值。我将其转换为十六进制表示形式,并取最后16个字符作为标识符:
hash_str = "foobarbazάλφαβήταγάμμα..."
hash_obj = hashlib.sha1(hash_str, encode('utf-8'))
hash_id = hash_obj.hexdigest()[:16]
我的目标是提供一个合理长度且不太可能为不同的hash_str
输入生成相同的hash_id
值的标识符。
如果SHA1冲突的概率是1 / (2 ^ 160),或1 / (16 ^ 40),那么如果我取十六进制表示的最后十六个字符,是否冲突的概率只有1 / (16 ^ 16)?或者字节(或它们的十六进制等效物)没有均匀分布吗?