此系列为普林斯顿大学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位。
函数计算流程如图。