Ale*_*lds 6 hash sha1 probability
我在Python中有一个字符串。我用计算该字符串的SHA1哈希hashlib。我将其转换为十六进制表示形式,并使用最后16个字符作为标识符:
hash_str = "foobarbaz?????????????..."
hash_obj = hashlib.sha1(hash_str, encode('utf-8'))
hash_id = hash_obj.hexdigest()[:16]
Run Code Online (Sandbox Code Playgroud)
我的目标是提供一个合理的长度并且不太可能hash_id针对不同的hash_str输入产生相同的值的标识符。
如果SHA1发生碰撞的概率为1 /(2 ^ 160)或1 /(16 ^ 40),则如果我采用十六进制表示的最后十六个字符,则发生碰撞的概率仅为1 /(16 ^ 16)?还是字节(或其等效的十六进制)分布不均?