算法就是为了达成某一目标而进行的一系列操作步骤。从原料到成品,中间的加工过程就叫作算法。一个算法往往是由不同的操作步骤按照一定顺序或规则组织起来而形成的。
“加一算法”可以称得上是世界上最简单的算法。任何数字通过这个算法后都被加一。
我们要讲的哈希算法也是这样,原始数据经过哈希算法加工以后得到的数据就叫作哈希值(Hash Value)。哈希算法并不是一个算法,而是一大类算法的统称。由于哈希算法的技术细节已经超纲,我们在这里不讨论它的原理,只介绍这种算法的性质和应用。
哈希算法种类很多,但是它们都具有如下四大性质:
哈希算法性质一:等长性
不管输入的数据是长是短,算法得出的哈希值都具有相同的长度。哈希值往往很短,通常只有一两百个字节,占用的存储空间很小。
哈希算法性质二:单向性
由数据得出哈希值非常容易,但是从哈希值推导出原始数据是不可能的,即使在知道哈希算法细节的情况下也不可能。这一特性对于确保区块链的安全性至关重要。
哈希算法性质三:无序性
就算原始数据仅仅改变一个字节,它的哈希值也会变得面目全非,完全没规律。当然,现实中的哈希值不会是任何有含义的文字,往往是一串随机字符。
哈希算法性质四:一一对应性
同一个原始数据用同样的哈希算法,永远得到同样的哈希值,一个哈希值只能有唯一的数据值与其相对应。