什么是哈希?

无价值,不投资,大家好,欢迎来到价值学堂!

各位投资者在学习区块链知识的时候经常会遇到很多头疼的专业术语,“哈希”就是一个,到底什么是哈希?如何正确的理解哈希,是我们学习区块链永远越不过去的一个难题,好在理解这个概念其实并不难。

哈希的英文原型是“hash”,意思就是切碎并搅拌,就想西餐中一道菜,把很多食材拿到一起切碎并搅拌在一起,就像下图我们看到的这个,就叫做哈希。

嗯,回到区块链计算机科学领域,什么叫做一个哈希运算呢?

而这是我们拿到一个文件,通过一定的运算,得到一串数与之相对应的数,那就是所谓的哈希值或者简称为哈西。在运算的过程中把原始的文件的数据切成一块一块,然后再重新排列得到最终的哈希值。

我们可以直观想象的就是,这种运算和排列的方式可以有无限多种,所以呢,还是算法也是有多种,我们甚至可以与动手,写出自己的哈希算法,但是一个好的哈希算法呢,我们认为要满足三个条件。

第一、给定一个数据文件M就能很容易计算出他的哈希值X。

我们要进行运算的文件的可以是任意长度的文件,能给出我们的哈希算法应该是很快的就能得到固定位数的一串数,来跟他来对应。但是呢,不同的哈希算法是啥对应的最终的输出的一串数的位数是不一样的,比如常见的MD5算法的哈希位数是32位,sha256哈希算法是64位,crc32哈希算法是8位。

第二、根据哈希值X不能推算出M

这个怎么理解呢?就是我们指定的一个文件,通过哈希运算能得到哈希值,但是反过来的,由哈希值反推计算出原始的文件是做不到的,也可以说哈希算法都是单向算法。

第三、很难找出两个不同的数据拥有相同的哈希值

很难找出两个不同的数据,拥有相同的哈希值,这里的一个关键词是很难,为什么是很难的呢?在解释很难之前,我们先来看一下第三点的一个具体运用,通常我们去网上下载一些比较大的文件的时候,你会发现它旁边会贴一串哈希值,这个是干什么的呢?就是当我们下载完毕之后呢,我们在自己电脑里面也用相同的哈希算法,来运算一下得到一个哈希值,如果这两个哈希值完全相等,就证明了我们下载的文件是完整的,没有损坏的。

我们再来理解一下“很难”的两个字,其实呢,作为哈希算法的设计者,我们的初衷呢是希望最理想的情况是,每给出一个数据,我们就有一个独特的哈希值与它相对应,这样的话我们就认为这个哈希算法的是绝对安全的。但是实际情况下,是不存在绝对安全的哈希算法的,理由如下。

我们的输入数据呢,其实是无限的、任意多个,输出的位数又是固定的,输出空间是有限空间,所以说必然,会出现有不同的数据得到相同的哈希值,也就是说运算结果撞车了,撞车现象越频繁,我们说这种哈希算法的安全性就越低。

一个相同的文件,我们用不同的哈希算法能可以得到不同位数的哈希值。通过crc32哈希算法得到的是8位哈希值,MD5算法的哈希位数是32位,sha256哈希算法是64位。运算结果越短的算法执行速度就越快,同时它的安全性就越低。

实际计算法的用处呢,又是千变万化的,不同的哈希算法适用于不同的场合,而在不同的场合得到的哈希值又有不同的名字。例如,有的时候叫校验值,有的时候叫摘要,有时候又叫指纹,具体哪种叫法到底都是发挥着一种什么样的作用,我们就不在赘述,大家主要在学习区块链知识的时候,一看到类似的数据,知道他们都是哈希值就可以了。

价值学堂,一个教你持久赚钱的学堂,最后祝福各位投资者学习愉快,投资成功!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180605G06DB700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券