哈西算法是一种密码散列函数家族,被 fifth 所认证,用于安全散列算法。煞, 这类算法能将输入的消息可以是任何数据通过一定的计算过程转换为固定长度的字符串,这个过程是不可逆的。哈西算法可以概括为一种将任意长度的数据映射为固定长度哈西值的算法,这个哈西值也被称为数据的摘药,这个映射过程是不可逆的, 也就是说,无法从哈西值反向推导出原始的数据。哈西算法的设计目标是使得对于任意给定的输入输出,哈西值的计算都非常快速。 同时,对于不同的输入输出,哈西值也应尽可能不同。哈西算法的用途主要包括以下几个方面,一、安全加密哈西 算法常用于加密过程,例如,在数字签名和密码存储中, md 五是一种常见的哈吸算法,他将输入的信息如密码转化为固定长度的二径至串哈吸值,并具有较高的安全性。 然而,对于某些密码, md 五的破解概率虽然极低,但仍存在可能性。因此,在重要场合,建议使用更高级别的哈西算法,如煞二、五、六二、唯一标识哈西算法可以生成唯一的标识符,用于唯一标识数据或者对象。 例如,在分布式系统中,哈西函数可以生成唯一的节点标识符,用于标识各个节点。三、数据较验哈西算法可以用于检测数据的完整性。在 数据传输过程中,接收方可以通过哈西函数重新计算数据的哈西值,并将其与发送方发送的哈西值进行比较,以检查数据是否在传输过程中被修改或损坏。 四、负载均衡哈西算法可以用于实现负载均衡,特别是在分布式系统中,通过使用哈西算法将不同的用户或者请求映射到不同的服务器上,可以实现负债的均衡分配,提高系统的性能和稳定性。五、数据分篇 哈西算法可以用于将大量数据分成小块,方便进行存储和管理。通过将数据哈西为固定长度的二进制串,并将这些二进制串存储在不同的位置,例如硬盘的不同扇区或者不同的服务器,可以实现数据的分布式存储和 管理。这种破解方法在实际中是极其困难的,因为哈西值的数量级非常大,破解的概率非常接近于零。同时,随着哈西算法复杂性的提高,破解所需要的时间和资源也会不断增加, 因此,在现实世界中几乎不可能实现。这种破解方法在实际中是极其困难的,因为哈西值的数量级非常大, 破解的概率非常接近于零。同时,随着哈西算法复杂性的提高,破解所需要的时间和资源也会不断增加,因此在现实世界中几乎不可能实现。
粉丝198获赞1155


哈喽,你们好吗?这里是土妹编程,今天这期想跟大家讲的是哈西函数,我们之前聊到了对称加密、非对称加密,这些都是密码学当中非 非常重要的部分,今天讲的这个哈西函数也是非常重要的密码学里面一个最基础的内容。这三种算法基本上是各种加密算法,密码学算法当中我们需要掌握的三大算法,相当于是密码学的一个支柱,他同时也是我们要了解的 tlsssls、 gdp、 l 四的最基础的算法。那我们今天就来看一下哈西函数的内容吧。首先我们先来看一下什么是哈西函数,就是这边有一个例子,就是原来你可能有一对 的文本,然后你通过一个哈系函数,他就变成一个固定长度的一个里头串,就是我们有时候也会用这个数字指纹来指代这件事情,他有以下几个 关键字,就是我们怎么去理解这个图啊?我们可以看这些关键字。第一个是这个是单项的,比如说我有一大堆的文本,他是通过这个阿奇函数单项的去转成这个数字指纹,但你不可能通过这个指纹反推这个原始的这个消息,这是不行的,因为这是一个单项的一个操作。那么第二个关键字 呢?是压缩,也就是一般来说我们要运用的场景是这个原始消息可以很长,对你原来有一个很大的文本或者是什么,你就是一般来说都是把原始比较大的一个消息,你把它压缩成一个东西,就是比如说是数字指纹,我们用来判断这个消息是不是原来的那个消息,所以就是说他的一个很重 重要的一个关键字就是压缩,然后第三个关键字也是非常重要的,就是定长,就是比如说你看这边有一些数字,比如说我这个哈西函数,我是用这个五五五百一十二位的,那所有的这个哈西函数,不管 管你是什么样的消息,你通过这个哈西函数,你传过来的最后得到的这个结果都是五五百一十二位的,他就说你,你不管你消息,因为有时候我们的消息可能有就是有的很长,有的很长,有的很短,但是呢我通过统一的这个哈西函数,他最后生成的这个数字指纹是一样长的,这是一个非常重要的一个定长的概。 那一般我们需要了解哈系函数呢,基本上都是需要知道什么叫做碰撞,什么叫做冲突,这个大家学计算机其实应该也都知道,就是我们计算机中就有哈系函数嘛,他就也是一样的这个这个 碰撞冲突这概念是一样的,就是说你有两个不一样的消息,那你通过这个哈系函数计算了以后,你最后得到的这个哈系直、哈系直,最后得到这个结果是一样的,就这个碰撞了,这个产生了冲突,这个基本上是不可避免的,因为你把一个这么长的一个就很长的一些东西,你要把压缩成一个东西,你必然就是会有 有不同的这个消息,对应到同样一个压缩的这样一个哈系直的这个情况,这是不可避免的,但是我们要追求的就是强抗碰撞,就是说让这种情况尽可能少的发生,就是就是比较高级的,比较好用的,他就算法就是都有这样的一个特点,就是这种出现碰撞的情况不是很多,那然后我们 要追求比较好的哈系算法,基本上也是要高灵敏。他的意思就是说我原来的一个文本,比如说我有一千个字,我只改动了其中一个字,那么我希望最后的结果是改变的非常大的,这就是一个高灵敏,因为你正常的一些,比如说普通的一些什么乱七八糟,我们以前的算 可能是那种你改了一点点,那你最后的结果也只改了一点点,这不是我们想要的效果,我们想要的是只要他改了,哪怕是一点点,我们都能能产生翻天覆地的变化,就最后产生的这个哈西只可能是翻天覆地的变化。那么这就是以上就是 哈系函数的一个基本介绍了,你会发现就是说跟计算机里的这个哈系函数其实是非常,就是是一个东西,其实是一个东西,就是计算机里我们本来就有一个叫哈系表的东西,应该学计算机的人每个人都知道这个东, 他的用法呢主要是用于我们要储存一个东西,然后你要你把它储存了,我们要去查找他呢,你一般是需要计算这个键的这个哈吸值,然后你通过这个哈吸值去这个表里面去查找,这是计算机里的一个用途。那哈吸函数其实是一个 功能非常强大的东西,他的密码学当中用的非常的多,他只是说运运用了更多的一些安全的属性,我们先看一下他的用途,他 用到了什么地方?比如说一个最重要的一个用途,就是说完整性检测,完整性检测的意思就是说因为比如说我一个,我有一封鸡毛信,对吧?我要送到几千里以外的一个地方,我要 判断这个姓就中间没有被人打开过,没有被人篡改过。那以前古代的这个做法呢?是在这个姓上面他会印一个什么图章,那么被这个改过的呢?那这个你这个姓就会被打开过,他就通过这个图章来判断 我这个幸运门被人打开过。那现在呢?我们是这个计算机时代,计算机时代他是会用这些教验的办法去教验你这个文件是不是原来的这个东西。那其实我们在上网的时候,我们会下载一个文件,或者说一个解压缩的包,我们要解压缩的时候,你在解压文件的时候,他也会有这种教验,那 以这种下载文件解压文件的时候呢?其实也经常会用这种什么机偶教练呢? c rc 教练,这种大家应该都听说过,但是这几种教练呢?他就是说没有抗这个数据篡改的能力,如果他只是说,嗯,我在这个信道上 传输会不会有什么丢包啊?什么发错包啊?这个包的位置不一样啊,这种就是是一些不可抗力的原因造成的。他不是说防止黑客是篡改的,这个能 他这两种教练他只是一些基本教练,如果一个黑客,他一个坏人,他想改你的这个东西,他还他可以故意 意的去改你这个教练的值,他是可以改的,所以他需函数呢?他是其实好像本身他也没有抗数据篡改的能力,但是需要加上这个 k, 就是如果你有一个密药的话,他就可以抗击这个数据篡改,因为你你手上有一有一个钥匙吗?这个钥匙是只有通信双方才有的,你加了这个密药以后,那这个第 三方就没有办法修改了。这是哈西函数在网络传输当中非常重要的用途,就是我们完整性检测,还有数字签名。那我们在实际工作的项目当中也经常会用到这种登录验证啊,叫对密码, 这个也基本上是用哈西函数来实现的。他他是的情况是这样子,比如说我们这个用户,很多他有注册的用户会给你用户名密码,但是这个密码我们是不能直接存在数据库的。如果密码直接存在数据库的话,那别人能够取得到你这个数据库, 他一反问他就 select 查询一下,他就能查到所有用户的这个密码,对吧?你不能铭文存的,你一定要加密了,以后存。那很多常见的这种加密办法,他就是先加上一个盐,嗯, 这个盐是意思就是说如果你直接对这个密码,对做哈西函数操作的话,这个太容易破解了。因为哈西函数通常比较简单,所以别人很很容易用 早表的这个办法去找到你这个密码,他可以猜测出来,他可以就是通过扫红彩虹表的办法去去破解你的密码。对,一般来说,为了增加这个复杂度,我们会再加上一个 盐,这个盐呢一般呢会存在,他就是说相当于你做菜的时候你加一点佐料,他就是这个意思,你在做巴西函数操作的时候,你再加一点佐料,这个佐料就是这个 sus, 一般来说每个用户他有可能用不一样的 sult, 然后这个 sure 的这个值呢就会 存到数据库,也就说数据库里可能他就会存这个密码的和加上 sot 以后的哈系直,然后再把这个 sot 同时也存在这个数据库里面,这样他是加了一层保障。可能你想知道,就是说为什么我们这个密码他不用一些什么对称加密啊,非对称加密啊,这这些加密算法呢?他原因是因为这些加密算法 都会比较慢,哈吸算法是最快的,他是比较简单,运算速度会非常快,但是如果你用这个加密算法的话就会慢很多,就非对称加密是最慢的,然后是对称加密是第二慢,然后哈吸函数是比较快的。所以一般来说你像你这种登录验证是经常需要 用到的一个功能,基本上都是用哈西函数去做的,所以一般都是加上了一个盐,对一个密码再进行一个哈系操作。那数字签名讲过了,他也是哈系函数非常重要的一个应用,我们后面会详细讲这个数字签名的原理,那在区块链中他是哈西函数也用的非常多,这个不是我们讨论的重点,就先不讨论, 那我们看一下有哪些阿西算法就可能大家也都听说过这个 md five 是很出名的,他是应用的非常非常广泛的一种算法,就很多 line 里面他都有 md five 的这个命令,那就是你直接可以用 md five check some 来来就是进行一个运算,所以就是可见他的那个普及程度。但是他也是一个比较老的一九九二年的一个 算法,他现在也是已经被证明可以破解,所以他已经是不安全了的。我们在实际的生活项目当中要求比较高的话,都不推荐用 md ff 现在用的比较多的还是 这个傻二,就是我们一般说是傻一,傻二嘛,傻一呢,他也已经不安全了,已经被证明是不安全的一个算法,所以大家都是用 md, 嗯,用傻二,然后我们经常看到的这个傻二五六、傻五一二都是这个傻二的算法,然后这个傻三呢是一个新出来的一个东西,因为傻二呢现在还是安全的,所以 虽然傻三出来了,但是实际上生活中大家项目中用的比较多的还是这个傻二,然后所谓的这个傻二五六、傻五一二,他的意思就是说输出的这个长度,因为我们刚不是说他输出的这个长度是定长的吗?如果这个输出长度是五一二的,那么他就是傻五一二。那其他这些呢?算法可能用的相对比较少。 下面我们要讲的一个比较重要的概念是这个 mac 和 hmac, 什么叫 mac 呢?他是他的意,他的英文全称是 mac, 就是 message aussentication 扣消息验证码,他是网络传说当中 hps 里面非常重要的一个概念,他主要是为了去 检查这个你传输的这个消息有没有被人篡改过,就是他主要一个功能,我们看一下就是你在发送的这个双方,如果比如说我是这个发送的人,他一般是这个 message 加上一个 t, 然后通过这个算法去计算他的 mag 值, 然后你会把这个消息跟这个麦克值呢一起传过去,然后收到的这个人呢要对这个麦克进行计算,他因为通讯双方呢,他都知道同样的一个 key, 为了防止第三方 串改,你就必须要,就是说双方是要有一个共同的这样一个钥匙,对吧?这个钥匙呢是别人都不知道的,只有你通信双方才知道,这样才能保证你这个计算的这个过程别人没有办法去干预,没有办法去编造一个东西,因为这个 t 呢是已经是大 大家是共有的了,你通过这个 k 来进行这个对这个算法加上这个麦 c 值去计算的这个麦克呢,这样他们两个这个就值相等的话,才能说明这个东西没有被人篡改过,所以这个麦克呢,就是我们现在用的都是基本上会用哈西函数比较多,所以就是叫做 h 麦,他的意思就是哈西贝, 就是说他就是这个麦克算法,他这个框里面他就用的算法呢,他其实就是用了一个哈星算法,所以这就是 hmimic, 你会可能会看到这个 这样一个概念。那在密码学里面呢,大家会讨论到的一个问题是我先对这个东西进行这个麦克计算再加密,还是说先加密再计算这个麦, 他这个麦克绝大家也可以就是就是理解为就是一个教验码的一个东西,就是消息,你用来对这个消息进行教验的一个东西,就是看别人有没有改过,那 tls 一 一点三之前就是我们现在因为很多都是用的 ts, 一点二嘛,现在还是用一点二比较多,他基本上都是这样子的, 比如说你这是一个文本,对吧?他对这个文本加上一个 t, 然后用用哈嘘函数算出了一个这个 max, 相当于就是这教验嘛,你就算好了,算好了,你加上这个文 文本,然后再对他进行加密,这个就是密文,就是我已经加加密好的一个文档,所以这个叫做先计算 mark, 然后再引客。那确实是有很多的讨论是说觉得这个不是很安全,就你先算 mak, 然后再算,再隐窥,不止的话 不是特别安全。有这样的讨论,所以也有很多人是支持是先隐愧,然后你再计算麦克,就是把我们这个流程图稍微换一下位置,这个在 tls 一点二之前呢,他是把这个写死的,就是一点二之就是一点三之前大家就是这样操作的,就是这样子。然后一点三以后呢?就是你 可以自己去,就是定义,就是通讯双方自己去定义,你是要想要先 mac, 然后再盈亏,然后是或者是你想先加密,然后再计算这个 mac。 嗯,那说了这么多,可能大家也觉得有点呃, 都是一些知识点了,可能看的有点无聊啊,我们看一下这个实际生活中这个 hgbs 里面是怎么一回事吧。啊?我们先来看一下就是实际生活中,比如说我们访问一个网站,这个网站是杨婉迅,然后呢?他这边一般 哥浏览器这边都有个小锁的标志,你可以看到这里,他也会告诉你这个证书,你可以查看这个证书他是有当前是有效的,然后你点开这就是他的证 书,首先你可以看到证书他是有一个链的,这个回头我们会再详细讲这个证书链的问题,总之就是这个是我们现在要看的这个证书,然后这是证书的这个详细信息,我们可以看到这就是说 这个证书,比如说他是什么国家的呀?是哪里的呀?然后这个公司组织,然后这个名字这些都是些基本信息。然后呢 他告诉你这个证书是由谁颁发的,因为所以,嗯这个也涉及到就是证书的详细的一些概念。后面会再详细讲证书的东西,就说证书是有一个就是权威机构给你办发的,那这个权威机构他这边比如说这个亚马逊的这个证书呢,他是由这个低级色的这个权威的公司帮你去颁发 发的这个证书,他这就告诉你证书是由谁颁发的,然后序列号是多少,然后这就是这就是我们刚刚一直在讲的一些什么签名算法,大家可以看到这就是很关键的一个内容了,签名算法他这边是用的是啥?二五六,就是 我们讲到傻二五六呢,他就是傻二,然后呢他输出的结果是正常的二五六,大家注意他这边傻二的话他这没有写上,傻二没有告诉你二,他是因为傻 一没有这些东西,所以傻二五六呢,他其实是傻二的一部分。然后签名呢,他告诉你是先通过这个哈西函数计算, 算了 max, 然后再通过这个 isa 进行加密,这就是一个非常常见的一个签名的一个套路,签名套路呢很多就是你 这样一个哈西函数,再配套一个非对称加密的一个算法,这就是一个最常见最常见的一个组合,就是哈西函数选用的是杀二五六,然后这个加密算法选用的是这个 isa, 这两个都是最流行的。然后这些就是证书的这个有效期是在这个期间,然后这是他告诉你,因为 之前讲非对称加密,对称加密那个时候就已经跟大家聊到这个什么叫公药,什么叫撕药,这两个大家如果已经忘记的话,可以回头再去看一下那个视频,他这边就是因为公药是公开的嘛,他这边会就告诉你这就是我的公药,然后他最后再把这个签名签好的一个东西,这就是他签好的东, 签名的结果告诉你,对,这这就是签名了。然后后面他再会因为他这证书,一般来说他现在都有很多各种各样的这种扩展包,然后他这边就有很多的扩展,然后他还会告诉你就说我这个名字,比如说亚马逊、阿曼总点 com, 我是用这个证书,然后我这个中间有个缩写的 amzn 这个 dns 这个名字,我用的也是这个证书。然后我们可以看到最后他还有一个叫指纹的东西,最后这个指纹 纹的东西呢?这个东西其实不是特别的重要,就是证书里面他最重要的是签名,这个指纹呢他只是一个教验盒的一个作用,他是不能防止篡篡改的。我们之前就是聊过,就是关于教验的这个问题,教验的话他有什么机构教验 c 呀? c 教验他是 可能是不同的这个网络层级的一个东西,这个指纹跟你就是网上下载文件一样,他就是说一个教验的一个东西, 这个就是想跟大家分享这个数字签名跟指纹的一个区别。然后呢查看证书呢?刚刚跟大家演示了,就是怎么做 从浏览器上去看这个证书,那命令行的话是这样子,如果你已经下载了这个证书到你本地,比如说你下载了一个 m 这种点 die 文件,这样一个证书,你可以通过这个命令去查看他这个证书里面的内容。这个证书我给大家看一下,就是比如说我下载了这样一个证书,然后我可以用这个文本文 文本编辑器去把它直接打开,你是可以直接看到的,但是你看到内容呢?是这样子,他这边写着 begins tpk 的,就说证书从这边开始了,然后你在一堆乱码乱去 发作的东西,然后到最后呢是这个 and the certificate, 就是我们看到这个 crt 文件内容,文本是这个东西,但你想要看这个其中这个里面具体有些什么内容呢?你一般是执行这样一个命令,比如说 说,比如说大家可以看一下,比如说我下载了这个亚马逊的这个色,然后通过这个命令呢,他会打出来告诉你这个证书,然后他的序列号是多少,然后他签名的算法是什么?这个是比较老的一个文章,他可能用的是傻一加上 s a, 然后刚刚给大家演示的这个浏览器上的这个证书呢,他是用傻二五六,这就是就是这个签名算法。然后呢他是有这个证书是由什么颁布的?刚刚我们在浏览器上也可以看到是这个公司颁布的一个证书,然后他这里面比如说他还有这个公要的这个算法,公要的内容是什么?然后还有这种各种这个 扩展包。因为大家应该知道这个证书呢,一般都是这个 x 五零九这个格式的,就是我们基本上用的现在大部分的网站都是遵循这个格式,然后他这是是第三版的一个规格,前面这里有写到这个证书是第三的 v 正三,然后这个 v 正三的这个他还有 加了一堆各种各样的拓展包,然后最后你这边可以看到他的签名,签名的这个内容是什么,就最后再简单就是 再跟大家稍微讲一下这个证书链是怎么回事吧?就是最根本的,大家应该听说过有个叫跟证书的东西,跟证书的就是非常少的,非常少的跟证书是全世界最权威的一些东西,一些跟证书的机构,他可以在信任一些其他的一些机构,因为你 跟证书呢,全球也就那么几个,跟证书是全球大家都相信的,他呢会在信任一些其他的一些机构,比如说相当于一些我其他一些授权的一些机构吧,这些机构呢他也可以用来签发证书, 那他呢还可以再签,还可以再签一个什么机构。然后面的这个机构呢?比如说他没有权权限去签别的机构,但是他可以去颁发证书,因为他可能有不同的权限嘛。然后呢到这里这一步,这个机构呢,他就颁发了最后的 这个证书,然后这个证书呢他就会安装在这个服务器,然后我刚刚给大家看的就是这个最后的这个证书,关于证书链的东西,我们还是后面几期再详细介绍吧。这期我们还是再回顾一下这个哈西函数,我们还有什么, 有没有什么漏掉内容。首先哈西函数就是最关键的一个东西,我们要记住的是他是结果是定长的一个输出,就是你不管是任意长度的这个输入,他就最后转化的一个输出是定长。 然后最常用的这个场合就是你用紧凑的方式去比较大量的数据,经常你会用作叫做指纹呢,叫 fingerprint, 或者是叫摘药。就其实我们在项目中这个哈西兰树这种这种用法也挺多的,比如说 我有一个很大的文档,然后呢我们再给他做一个签名,就用这个哈系函数算一下他的这个哈系值,就就一个很简单的一个签名啊。然后呢下次我们再收到这个文档的时候,一般是在 算一下他的哈系直,看一下他跟原来的这个哈系直是不是一样的。如果他跟原来这个哈系直是一样的,那么就是他没有改过,我们就认为他没改过,因为这个也就是叫做数据完整性检测。然后这边就是,嗯,讲到 md five 跟这个傻一呢,都是已经被证明了不安全的, 对,现在可能是用的傻二五六,傻五一二是比较多的,这些都是傻二的分支。然后很重要的概念是单独的哈嘘函数是不能作为签名的,因为我们在做哈序运算的时候,比如说我们计算机里运算的时候,他也是没有加这个加加上密。要的是我们在网络上通讯的时候,一般我们用哈虚函数的时候会加上 秘药,这样子呢就是第三方不知道,只有通讯双方才知道,这样你就可以作为签名了。然后这个一个比较重要的概念就是这个哈须 base 的,这个嘛就基于哈须的消息认证码哦,这边这个概念可能刚刚没有详细去讲,就是说因为我们的一个文档非常大,大非常大, 所以你可以看到我们是先对这个文档进行哈西运算,然后加上这个 k, 同时再生成这样子的一个麦,不是说我直接拿着这个文档,然后加上这个 k, 我就能算出这个麦,一般不是这样子的,因为文档是太大了,然后我们对文档的哈西进行签名,都会比较, 那关于密码学里面的这个哈系函数就基本上就是这些内容。如果你有什么想要补充的,或者是有什么疑问的话,欢迎在屏幕下方跟我留言互动。如果你喜欢这期的视频的话,请不要忘记点赞,如果你还没有关注的话,希望你能关注,我们的点赞三连是对我最大的支持,那我们下期再。

区块链知识里经常听到哈西算法,它究竟是什么?哈西算法是一种只能加密不能解密的密码学算法。简单来说,哈西算法就是一种特殊的函数, 不论输入多长的一串字符,只要通过这个函数都可以得到一个固定长度的输出值,这里的输出值就叫做哈西值。哈西算法有三个特点, 第一点,防窜改能力,输入值只要改变一点点,输出的哈西值也会天差地别。 第二点,抗碰撞能力,所谓碰撞,就是输入两个不同的数据,最后得到了一个相同的输出值, 而抗碰撞就是大部分的输入都能得到一个独一无二的输出。第三点,单向性输入一串数据,通过哈西算法得到一个输出值, 但是通过这个输出值是没有办法反推回来得到输入值的,要想找到指定的输出值,只能采用梅菊法不断更换输入值,寻找满足条件的输出值。 哈西算法保证了比特币挖矿不能逆向推倒出结果,所以矿工不断的运算,本质上是在暴力破解正确的输入值, 谁先找到谁就能获得比特币奖励。点击关注区块链趣味百科,更多区块链知识等你来探索!



王这个字,一个哈西对不对?这是王的哈西啊,同意的同样巴拉巴拉巴拉一顿写啊,随便写,再计计算,还有个哈西,所以哈西是什么呢?哈西是一种 f 定向数,还还是一种定向算法? 定向上就是无论你给你什么乱七八糟的,一一坨狗屎也行啊,一盆一盆香香蕉也行啊,只要是数据啊,你香蕉给不进去啊,对吧?你只能数据给进去,数据给进去了之后,二数据肯定二进制的啊,一零一零一这种的给进去他会算出一个值,这个值他是定长的, 注意你看是没有哈西会出现这种,我算这么多次,我这哈西一定是一定是这么一定是这么长的,看着没,不可能出现多了了,就你会发现有时候我就给这 字给多了,是该出多,在咱们常常识说字给多该出多的吧?字给少,该出少,是吧?那不是哈西的算法,是定向的,这个涉及到一个数学的概念,就是一个群的概念啊。

在这块案中经常听到的哈西函数是个什么鬼?如果你觉得他很高级啊,那一定是被他的名字所迷惑了。因为哈西函数不过是一个我们小学二年级有接触过的运算,只是当时他的名字更加朴素。维基百科对哈西函数是这样定义的,翻译成中文啊,再翻译成人话就是,不论你的输入有多长,哈西后的输出结果都是个定场。 例如,李雷,李雷给韩梅梅,李雷给韩梅梅十个大饼,经过某一哈西运存后啊,他的结果是这样这样这样的。不论输出的结果是由哪些字符构成,输出结果的字符长度都是固定的八位。就算你把整本资本论的每一个字都写出来,全部作为输入,经过以上哈西运存后,得到的结果仍是八位。 这么神奇的运算,其实在小学二年级就接触过,你是不是有点不敢相信?我特地上网搜了一下啊,人教版二年级数学下的电子教材,在第六十一页可以看到,九除以四等于二于一,十除以四等于二于二,十一除以四等于二于三。 如果再扩展一下,九十九,一百一百零一呢?你有没有发现啊,无论输入的是一位的九,两位的十十一、九十九,还是三位的一百一百零一,他的余数都是一位。这就是我们最早接触的哈西运算。求余数在密码权中啊。评价哈西运算是否安全,主要看三个方面,第一,防篡改能力。 输入值。只要有很小的改变,输出的哈西值就会天差地别。刚才我们看到啊,李雷给韩梅梅十个大饼的哈西值是这样的, 如果改成李雷给韩梅梅十一个大饼,同样算把下的哈西直是这样,可以看到两个哈西直没有任何关联,只看哈西直,你是很难知道他们的原始输入只有十和十一这么一点差别。 第二,抗碰撞能力随碰撞啊,是不同输入得到了同一个输出,两个不同输入的哈吸值撞车了。抗碰撞呢,是指不同输入得到相同哈吸值的概率非常低,或者说大部分输入都要独一 无二的结果输出。第三,反向不可算,这只输入一串字符,通过哈奇函数得到一个输出值,但是没法通过这个输出值反向推导出他的输入值。要想找到这个输入值,唯一的方法就是一个一个反复去尝试,直到试出想要的结果为止。 那么哈西函数到底有什么用呢?为什么会在区块链中反复提及呢?当李雷给韩梅梅十个大饼时,李雷不仅会把交易信息广播出去,而且会把交易内容通过哈西直广播出去。任何一个节点收到交易内容后,都会自行将交易内容进行哈西,并与同时收到的哈西直进行对比。 如果两者一致,则说明李雷给韩梅梅十个大饼的交易内容没有被篡改过。可能有人会问,如果黑客同事篡改了交易内容和相应的哈西指怎么办?这个是一道大饼的另外一个安全机制,工药和撕药。这个咱们回头再说啊。最后咱们说一下,目前大饼所使用的哈西算法是杀二五六算法,全称叫做安全哈西算法,只有美国 国家安全局研发的,他的输出是一个二百五十六位的二进制数据,或者是一个六十四位的十六进制数据。大家可以自行上网搜一下哈基函数的三元计算器,感受一下任何输入都有相同位数的输出,是一个什么样的企业。关注关蓝,讲你听得懂的外普三。