此係列爲普林斯頓大學Coursera課程《比特幣與加密貨幣技術》第一章第一節筆記
加密哈希函數(cryptographic hash function)
任意長字符串輸入,定長輸出(256bits),計算效率高
1、近似於無衝突:if x!=y,nobody can find H(x)=H(y) , because it takes too long to matter. (2^256種爲例,以2^130步99.8%的找到概率爲方法,計算時間過長)
所以可用於信息摘要驗證。
2、不可逆:當輸入取值不固定時,由哈希值不可逆解出輸入
3、puzzle friendly:已知哈希函數輸出y,若k是適合的輸入集(如不可窮舉)的一個值,則沒有比隨機找x更優的方法,使H(k|x)=y
比特幣使用的SHA-256 哈希函數
使用512bits作爲分組長度
加上多餘的一段數據,padding還包括了整條信息的bit長度,在這之前有1位1和指定的若干位0,使總長爲512位。
函數計算流程如圖。