本文是学习区块链技术中关于密码学哈希算法这一部分的相关知识点学习总结整理。
哈希算法
哈希函数(散列函数)定义
公式表示形式:
h = H ( m ) h=H(m) h=H(m)
函数说明:
m m m:任意长度消息(不同算法实现,长度限制不同,有的哈希函数(SHA-3)不限制消息长度,有的限制(SHA-2),但即使有限制其长度也非常大,可以认为是任意长度消息)
H H H:哈希函数
h h h:固定长度的哈希值
典型的散列函数都有非常大的定义域,比如SHA-2最高接受( 2 64 − 1 ) / 8 2^{64}-1)/8 264−1)/8长度的字节字符串。同時散列函數一定有着有限的值域,比如固定长度的比特串(例如:256,512)。在某些情况下,散列函数可以设计成具有相同大小的定义域和值域间的單射。
相关概念
- 哈希函数定义——密码哈希函数是一类数学函数,可以在有限合理的时间内,将任意长度的消息压缩为固定长度的二进制串,其输出值称为哈希值,也称散列值。
- 碰撞定义——是指两个不同的消息在同一哈希函数作用下,具有相同的哈希值。
- 哈希函数的安全性——是指在现有的计算资源(包括时间、空间、资金等)下,找到一个碰撞是不可行的。
- 抗弱碰撞性——对于给定的消息 M 1 M_1 M1,要发现另一个消息 M 2 M_2 M2,满足 H ( M 1 ) = H ( M 2 ) H(M_1)=H(M_2) H(M