一分钟读书俱乐部:《区块链技术驱动金融》系列(八)安全哈希算法

原文精选:我们讨论了哈希函数的三个特性及其相应的应用。现在,让我们讨论本书中将会大量用到的一个哈希函数,安全哈希算法(Secure Hash Algorithm 256,简称SHA-256)。哈希函数有很多,但SHA-256是一个主要被比特币世界采用,并且效果还很不错的哈希函数。


回想一下,我们要求哈希函数可以用于任意长度输入。幸运的是,只要我们能建立一个用于固定长度输入的哈希函数,然后通过一般方法,就可以将接受固定长度的哈希函数转化为可接受任意长度输入的哈希函数,我们称这个转换过程为MD(Merkle-Damgard)变换,SHA-256是采用这种变换方法的常用哈希函数之一。在通用术语中,这种基础型,可用于固定长度,具备碰撞阻力的哈希函数被称为是压缩函数(compression function)。经过验证,如果基本压缩函数具有碰撞阻力的特性,那么经过转换而生成的哈希函数也具有碰撞阻力。


读书笔记:

1,安全哈希算法(Secure Hash Algorithm 256,简称SHA-256)是主要被比特币挖矿所采用的哈希函数。

2,可以将接受固定长度的哈希函数转化为可接受任意长度输入的哈希函数,这个转换过程叫MD(Merkle-Damgard)变换,SHA-256就是采用的这种方法。

3,具备碰撞阻力的哈希函数被称为是压缩函数(compression function)。如果基本压缩函数具有碰撞阻力的特性,那么经过转换而生成的哈希函数也具有碰撞阻力。


原文精选:MD变换很简单。比如压缩函数代入长度为m的输入值,并产生长度短一些为n的输出值。哈希函数的输入(可为任意大小)被分为长度为m-n的区块。MD变换运作过程如下:将每个区块与之前区块的输出一起代入压缩函数,注意,输入长度则变为(m-n)+n=m,也刚好就是压缩函数的输入长度。对于第一个区块而言,之前没有的区块,我们需要选取一个初始向量(见图1.3)。每次调用哈希函数,这个数字都会被再一次使用,而在实践中,你可以直接在标准文档中找到它。最后一个区块的输出也就是你返回的结果。


读书笔记:

1,哈希函数的输入(可为任意大小)被分为长度为m-n的区块。

2,MD变换过程:将每个区块与之前区块的输出一起代入压缩函数。

3,对第一个区块,需要选取一个初始向量,以后每次调用哈希函数,这个数字都会被使用。


原文精选:SHA-256函数利用了这样的一个压缩函数,这个压缩函数把一个768位的输入压缩成一个256位的输出,每一个区块的大小是512位。我们可以通过图1.3来理解SHA-256的工作过程。



一分钟读书俱乐部:《区块链技术驱动金融》系列(八)安全哈希算法_第1张图片


读书笔记:SHA-256利用MD变换把一个固定输入的压缩函数变换成一个接受任意长度输入的哈希函数,这个哈希函数就具备了碰撞阻力,也就是能够确保安全性了。


截至目前,我们已经讨论了哈希函数、密码学上使用具备特性的哈希函数、这些特性的应用,以及在比特币世界中使用的一类特殊的哈希函数。在下面的章节中,我们将讨论通过哈希函数来构建比特币网络中的更为复杂的数据结构。


一叶之秋带你一分钟速读经典书籍,每天一分钟(只需阅读读书笔记部分),天天获新知。


一叶之秋——非著名股票分析师

CCTV证券资讯频道特邀分析师

币乎,币问内测作者;区分节点分析师

陀螺财经,币快报专栏作家

《区块链编年史》 《区块链重塑未来》系列作者

量价时空战法体系,一分钟读书俱乐部创始人

公众号:区块链项目评测

007er

你可能感兴趣的:(一分钟读书俱乐部:《区块链技术驱动金融》系列(八)安全哈希算法)