Hash Tips

【Hash 算法的評價維度】html

  • 正向快速:給定明文和 hash 算法,在有限時間和有限資源內能計算出 hash 值。python

  • 逆向困難:給定hash 值,在有限時間內很難逆推出明文。算法

  • 輸入敏感(雪崩效應):原始輸入信息修改一點信息,產生的 hash 值看起來應該都有很大不一樣。安全

  • 衝突避免:很難找到兩段內容不一樣的明文,使得它們的 hash 值一致。ide


【SHA家族】函數

  • 安全散列算法(英語:Secure Hash Algorithm,縮寫爲SHA)是一個密碼散列函數家族,是FIPS所認證的安全散列算法。能計算出一個數字消息所對應到的,長度固定的字符串(又稱消息摘要)的算法。且若輸入的消息不一樣,它們對應到不一樣字符串的機率很高。工具

  • 家族成員搜索引擎

SHA家族有五個算法,分別是 SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
它們是美國的政府標準,後面的四個稱之爲SHA-2
SHA-3第三代安全散列算法,基於Keccak(念做/ˈkɛtʃæk/或/kɛtʃɑːk/))算法,
NIST在2015年8月完成標準化時調整了填充算法,標準的SHA3和原先的Keccak算法就有所區別了。
  • 位數對比編碼

sha-1
160 bit, 40 字符
sha-224 224 bit, 56 字符
sha-256 256 bit, 64 字符
sha-384 384 bit, 96 字符
sha-512 512 bit, 128 字符
sha-512/224 224 bit, 56 字符
sha-512/256 256 bit, 64 字符
sha3-224 224 bit, 56 字符
sha3-256 256 bit, 64 字符
sha3-384 384 bit, 96 字符
sha3-512 512 bit, 128 字符



【MD家族】

  • 消息摘要算法( Message-Digest Algorithm)

  • 家族成員

MD4, MD5


【Murmur哈希】

  • MurmurHash 是一種非加密型哈希函數,適用於通常的哈希檢索操做。與其它流行的哈希函數相比,對於規律性較強的key,MurmurHash的隨機分佈特徵表現更良好。

  • 家族成員

MurmurHash1, MurmurHash2, MurmurHash3
  • Python3 示例代碼

>>> import binascii
>>> import mmh3
>>> binascii.b2a_hex(mmh3.hash_bytes('filename')).decode('utf8')
'983b90227c24f9d76dfb9443d8ebbf0e'    # 32個字符,128 bit


【CityHash】

  • CityHash 系列字符串散列算法是由著名的搜索引擎公司Google 發佈的 (http://www.cityhash.org.uk/)。Google發佈的有兩種算法:cityhash64 與 cityhash128。它們分別根據字串計算 64 和 128 位的散列值。這些算法不適用於加密,但適合用在散列表等處。

  • CityHash 經常使用來與 MurmurHash 作對比。


【OTHRE】

  • 王小云教授帶領的研究小組於2004年、2005年前後破解了被普遍應用於計算機安全系統的MD5和SHA-1兩大密碼算法。


【相關閱讀】


*** walker ***

相關文章
相關標籤/搜索