Hash算法广泛应用于区块链工作量证明中,每个具有创新性的区块链项目中均有各自不同的实现,属于区块链中比较核心和基础的技术。
Hash算法在信息安全方面的应用主要体现在三个方面:
文件校验
我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检測并纠正传输数据中的信道误码,但却不能防止对数据的恶意破坏。
MD5 Hash算法的”数字指纹”特性,使它成为眼下应用最广泛的一种文件完整性校验算法,不少Unix系统有提供计算md5 checksum的命令。
数字签名
Hash 算法也是现代password体系中的一个重要组成部分。因为非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。 对 Hash 值,又称”数字摘要”进行数字签名,在统计上能够觉得与对文件本身进行数字签名是等效的。并且这种协议还有其它的长处。
鉴权协议
例如以下的鉴权协议又被称作挑战–认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。
一般的说,Hash算法函数根据其原理,能够简单的划分为例如以下几类:
加法Hash:所谓的加法Hash就是把输入元素一个一个的加起来构成最后的结果。标准的加法Hash的构造例如以下:
位运算Hash:这类型Hash函数通过利用各种位运算来充分的混合输入元素。
乘法Hash:这样的类型的Hash函数利用了乘法的不相关性。例如:
除法Hash:除法和乘法一样,相同具有表面上看起来的不相关性。只是,由于除法太慢,这样的方式差点儿找不到真正的应用。须要注意的是,我们在前面看到的hash的 结果除以一个prime的目的仅仅是为了保证结果的范围。
查表Hash:查表Hash最有名的样例莫过于CRC系列算法。尽管CRC系列算法本身并非查表,但是,查表是它的一种最快的实现方式。
混合Hash:混合Hash算法利用了以上各种方式。各种常见的Hash算法,比方MD5、Tiger都属于这个范围。它们一般非常少在面向查找的Hash函数里面使用。