哈希算法
密碼哈希函數是一類數學函數,可以在有限合理的時間內,將任意長度的消息壓縮為固定長度的二進制串,其輸出值稱為哈希值,也成為散列值。
一個優秀的哈希算法將實現:
1)正向快速:給定明文和hash算法,在有限時間和有限資源內能計算出hash值
2)逆向困難:給定(若干)hash值,在有限時間內很難(基本不可能)推出明文
3)輸入敏感:原始輸入信息輸入一點信息,產生的hash值看起來應該都有很大的不同
4)沖突避免:很難找到兩段不同的明文,使得他們的hash值一致(發生沖突)
哈希算法的輸入值和輸出值之間沒有任何規律,所以不能從輸出值算出輸入值,想要找到指定的輸出值只能枚舉,不斷跟換輸入值,尋找滿足條件的輸入值
幾大成熟哈希算法介紹 :
1)MD系列哈希算法 MD就是MessageDigest的簡稱。家族成員包括MD2,MD4和MD5都產生128位哈希值。目前MD系列算法都發生過碰撞。
2)SHA哈希算法 Secure Hash Algorithm,直譯為安全散列算法。現共有SHA-1,SHA-224,SHA-256,SHA-384,SHA-512。
3)SM3雜湊算法 MD和SHA是國家通用的標準,SM3是我國算法標準。輸入長度的上限是2的6次方,輸出長度是256比特。
比特幣中,應用了兩個密碼學哈希函數,一個是SHA256,一個是RIPEMD160,用于比特幣地址的生成
哈希指針鏈
哈希指針是一個指向存儲地點的指針,加上一個針對存儲信息的哈希值。哈希指針不僅是一種檢索信息的方法,同時也是一種檢查信息是否被修改過的方法。
區塊鏈就可以看做是一類使用哈希指針的鏈表,因此每個區塊不僅僅告訴前一個區塊的位置,也提供一個哈希值去驗證這個區塊所包含的數據是否發生改變