在区块链的学习过程中,发现有一个词像幽灵一样反复出现,“哈希”,英文写作“HASH”。这个“哈希”据说是来源于密码学的一个函数,尝试搜一搜,论文出来一堆一堆的,不是横式就是竖式,不是表格就是图片,还有一堆看不懂得xyzabc。那么链尚教育来为大家介绍一下区块链(数据结构)的哈希。
& P6 d+ `; i5 ?7 Y1 W; [5 y$ o; |
h# v" c9 v/ Z# U: O w9 s- ^区块链哈希是什么?/ }$ {6 i$ U1 Q- o. T) k) J4 L
哈希是英文Hash的音译,它是一种信息压缩的方法。利用哈希能够将很长的一段文字,压缩成很短的一段乱码,然后获得这段信息的“摘要”。所谓"哈希"就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的 哈希长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的哈希一定是不同的。0 ~2 A, W3 X- R& V- T
区块中的哈希" C( j1 |8 t7 r0 I+ L! l5 Z2 W
在区块链中,每个区块中都有前一个区块的哈希值,前一个区块叫做当前区块的父区块。由于每个区块都有前一个区块的哈希值,当修改当前区块的任意数据都会导致区块的哈希值发生变化,这会对前一个区块产生影响,因为其中含有前一个区块的地址。
0 M; N$ J; K. s- e比如,当前有两个区块,一个是当前区块,一个是父区块。当前区块中有父区块的地址,如果需要修改当前区块的数据,就需要对父区块链进行修改。如果只有两个区块就比较好修改数据,但事实上区块链上有很多的区块。
0 o- N" g2 ]+ B2 y
4 g, D2 J: \: }举个例子:超市购物中的“哈希”
$ _7 F8 r; Q! t4 j日常生活中,见到过超市的购物结算单据,或者在电商下单时,有个订单号。其实哈希值就可以理解为在每笔交易区块链上的“订单号”,或者说是“电子凭证”。- }9 g! {) M/ [" ?& H2 e
购买多件商品,想不起来自己购买的物品的具体价格,可通过在订单和电子凭证上进行检索查询,继而找到相关信息。每个哈希都能准确的识别到已经标记的一个区块,而通过在区块链浏览器上检索哈希值,就可以找到对应的区块了。
$ r+ i, s; v' ?# ?哈希的其他称呼6 d* d" g, @2 Q1 h* e
散列函数(或散列算法,又称哈希函数,英语:Hash Function)是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。
+ x0 L5 L3 O9 G+ R举例来说,字符串123的哈希是(a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0)(十六进制),转成二进制就是256位,而且只有123能得到这个哈希。(理论上,其他字符串也有可能得到这个哈希,但是概率极低,可以近似认为不可能发生。)
* L# [2 d+ X; {5 d2 I3 o0 r7 `注:链尚教育专注区块链技术与基础知识培训,联合蚂蚁链及武汉大学,共建武汉市首家区块链培训认证中心,构建全面的区块链人才培养体系,致力于培养高层次、复合型区块链人才。7 h5 }& K c: \- h
汇聚武汉大学雄厚的教学资源及蚂蚁链全球领先的技术优势,链尚培养能够满足于社会各个领域的多层次区块链人才需求,助力武汉“区块链之城”的建设,实现区块链技术的经济效益和社会效益。 |