入门学习|哈希函数与哈希算法

Posted 汕大区块链空间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入门学习|哈希函数与哈希算法相关的知识,希望对你有一定的参考价值。

 获取25份区块链行业报告及白皮书:


哈希函数

哈希函数(Hash Function),也称为散列函数或杂凑函数。哈希函数是一个公开函数,可以将任意长度的消息M映射成为一个长度较短且长度固定的值H(M),称H(M)为哈希值、散列值(Hash Value)、杂凑值或者消息摘要(Message Digest)。它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。



哈希的函数表达式为:h=H(m)。

无论输入是什么数字格式、文件有多大,输出都是固定长度的比特串。以比特币使用的Sh256算法为例,无论输入是什么数据文件,输出就是256bit。每个bit就是一位0或者1,256bit就是256个0或者1二进制数字串,用16进制数字表示的话,就是多少位呢?16等于2的4次方,所以每一位16进制数字可以代表4位bit。那么,256位bit用16进制数字表示,当然是256除以4等于64位。于是你通常看到的哈希值,就是这样的了:

00740f40257a13bf03b40f54a9fe398c79a664bb21cfa2870ab07888b21eeba8


入门学习|哈希函数与哈希算法


哈希算法

把网址A,转换成数字1。网址B,转换成数字2。一个网址X,转换成数字N,根据数字N作为下标,就可以快速地查找出网址X的信息。


将任意长度的信息转换成一段固定长度的字符串,这个转换的过程就是哈希算法。


比如这里有一万首歌,给你一首新的歌X,要求你确认这首歌是否在那一万首歌之内。


无疑,将一万首歌一个一个比对非常慢。但如果存在一种方式,能将一万首歌的每首数据浓缩到一个数字(称为哈希码)中,于是得到一万个数字,那么用同样的算法计算新的歌X的编码,看看歌X的编码是否在之前那一万个数字中,就能知道歌X是否在那一万首歌中。


作为例子,如果要你组织那一万首歌,一个简单的哈希算法就是让歌曲所占硬盘的字节数作为哈希码。这样的话,你可以让一万首歌“按照大小排序”,然后遇到一首新的歌,只要看看新的歌的字节数是否和已有的一万首歌中的某一首的字节数相同,就知道新的歌是否在那一万首歌之内了。


入门学习|哈希函数与哈希算法


区块链中的哈希算法

哈希在区块链的作用如下:


区块链通过哈希算法对一个交易区块中的交易信息进行加密,并把信息压缩成由一串数字和字母组成的散列字符串。


区块链的哈希值能够唯一而精准地识别一个区块,区块链中任意节点通过简单的哈希计算都能直接获得该区块的哈希值,计算出的哈希值没有变化就意味着区块链中的信息没有被篡改。


入门学习|哈希函数与哈希算法

汕大优链

汕大区块链空间


长按二维码关注

以上是关于入门学习|哈希函数与哈希算法的主要内容,如果未能解决你的问题,请参考以下文章

哈希表与哈希(Hash)算法

入门|哈希算法是什么?

哈希(hash) - 哈希算法的应用

哈希算法学习

数据结构与算法——哈希函数与哈希表等

哈希表、哈希算法、一致性哈希表