3
我在Python中有一個字符串。我用hashlib
計算該字符串的SHA1哈希值。我將其轉換爲它的十六進制表示,並採取最後16個字符作爲標識符的使用方法:SHA1散列是否均勻分佈?
hash_str = "foobarbazάλφαβήταγάμμα..."
hash_obj = hashlib.sha1(hash_str, encode('utf-8'))
hash_id = hash_obj.hexdigest()[:16]
我的目標是提供合理長度和不大可能產生相同的hash_id
值用於不同hash_str
輸入的標識符。
如果SHA1衝突的概率是1 /(2^160)或1 /(16^40),那麼如果我取十六進制表示的最後16個字符,那麼碰撞概率只有1 /(16^16)?或者是字節(或它們的等效十六進制)不是均勻分佈的?
如果sha1是均勻分佈的,那麼也是它的「數字」。由於sha1被構造爲一個安全的散列函數,它應該是均勻分佈的或至少非常接近它(如此接近以至於看不到差異)。 – AbcAeffchen