密码学在不同的层次为区块链提供安全性,而区块链建立在三个基本架构上:哈希函数、密钥和数字签名。

其中,哈希函数(Hash Function)又称为杂凑函式或散列函数,是一个独特的数字指纹,属于只能加密无法解密的密码学算法,可以把讯息或资料压缩变小,并将资料的格式固定下来,就像所有的函数一样。

在哈希函数中,给定一个输入值X ,它会算出相对应且固定的输出值H(X);并且不会出现输入一个给定值却得到两个不同的结果。此外,哈希函数拥有很高效的计算速度,通过输入一个定值,并不需要很长的时间就能计算出结果。

哈希函数有两大特点:

在哈希函数中,输入的X 可以是任意长度的字符串,但输出值H(X) 是长度固定且绝不雷同的,以SHA-256 为例,输出的实际长度必须是精确的256 字节。除此之外,只要变动X 的一个位元,就会引起雪崩效应,导致输出的H(X) 天差地别。 哈希函数虽然是属于函数运算的一种,但输入值X 和输出值之间是没有规律的,也不是透过有逻辑的数学过程去计算得出,所以无法直接从H(X) 反推回X 。

因此,如果反过来要让H(X)落在特定的范围,唯有不断更换输入值X ,一个一个去试出满足条件的输出值H(X) ,大量的穷举运算是最好且最快的方法,而工作量证明机制就是这找出一个特定格式Hash值的过程(以比特币为例,即要求有一定数量的前导0为开头,以保证每10分钟左右只有一个人可以记帐)。

用一个现实中的例子来比喻什么是Hash 值:就像是每张新人民币都有一个独特且唯一的钞票编码,其中每个编码的后四码就是Hash 值,而工作量证明机制就是要所有矿工一次一次地去猜测那指定钞票上编码的后四码是什么,每个人都可以猜,第一个猜对的人即可得到所谓的挖矿奖励。

在比特币的系统中,每次记帐的时候会把上一个区块的Hash 值和当前的帐簿讯息一起作为原始讯息进行Hash 。而且因为无论输入X 尝试了几次还是几亿次,只需对结果H(X) 执行一次该过程即可验证。

所以加密哈希函数的主要特征就是它能够在并不需要被真正看到的情况下,验证某组交易讯息是否被窜改过。