什么是哈希值?
了解比特币基础知识的人都会接触到一个概念,哈希值。在比特币的区块头里,就有着前一个区块的哈希值,用来指向前一个区块。哈希值到底是什么呢?它有着怎样的特性?我们来了解一下。
哈希是英文Hash的音译,我们也可以把它译为散列,因此哈希值又称为散列值。哈希值是由哈希函数(又称散列函数/散列算法)计算而得的值。想要了解哈希值,就需要了解哈希函数的性质。哈希函数能够通过计算把任意长度的输入转换成固定长度的输出。
所有哈希函数都有以下特性:只要输入值相同,则输出的哈希值是相同的;输入值不同,输出的哈希值一般是不同的,但也有极小可能性产生哈希碰撞,这时候的情况是不同的输入产生相同的输出;在输入值改动一点点的情况下,在排除哈希碰撞的情况下,会输出完全不相干的哈希值;哈希函数具有不可逆和易于验证的性质,通过想要通过输出的哈希值来倒推得到输入值几乎是不可能的,而如果有输入值,就可以立刻验证它对应的哈希值。
基于哈希函数的上诉特性,产生了很多应用,比如比特币的区块首尾相连、算力挖矿、简单支付验证等,以及IPFS基于内容的寻址等。以后大家遇到哈希值/哈希函数的应用,不妨来回顾一下它的性质,思考一下为什么在那些地方运用哈希值/哈希函数。