SERVICE PHONE
363050.com发布时间:2025-12-28 12:04:11 点击量:
哈希交易所官网入口,哈希交易所注册,哈希交易所登录,哈希交易所下载,哈希交易所APP/哈希交易所官网入口为用户提供官方注册、登录、APP下载与币种交易服务,安全合规,快速充值提现,全面满足数字资产投资需求。
哈喽,你们好吗?这里是土妹编程,今天这期想跟大家讲的是哈西函数,我们之前聊到了对称加密、非对称加密,这些都是密码学当中非 非常重要的部分,今天讲的这个哈西函数也是非常重要的密码学里面一个最基础的内容。这三种算法基本上是各种加密算法,密码学算法当中我们需要掌握的三大算法,相当于是密码学的一个支柱,他同时也是我们要了解的 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, 我就能算出这个麦,一般不是这样子的,因为文档是太大了,然后我们对文档的哈西进行签名,都会比较, 那关于密码学里面的这个哈系函数就基本上就是这些内容。如果你有什么想要补充的,或者是有什么疑问的话,欢迎在屏幕下方跟我留言互动。如果你喜欢这期的视频的话,请不要忘记点赞,如果你还没有关注的话,希望你能关注,我们的点赞三连是对我最大的支持,那我们下期再。
哈西算法是一种密码散列函数家族,被 fifth 所认证,用于安全散列算法。煞, 这类算法能将输入的消息可以是任何数据通过一定的计算过程转换为固定长度的字符串,这个过程是不可逆的。哈西算法可以概括为一种将任意长度的数据映射为固定长度哈西值的算法,这个哈西值也被称为数据的摘药,这个映射过程是不可逆的, 也就是说,无法从哈西值反向推导出原始的数据。哈西算法的设计目标是使得对于任意给定的输入输出,哈西值的计算都非常快速。 同时,对于不同的输入输出,哈西值也应尽可能不同。哈西算法的用途主要包括以下几个方面,一、安全加密哈西 算法常用于加密过程,例如,在数字签名和密码存储中, md 五是一种常见的哈吸算法,他将输入的信息如密码转化为固定长度的二径至串哈吸值,并具有较高的安全性。 然而,对于某些密码, md 五的破解概率虽然极低,但仍存在可能性。因此,在重要场合,建议使用更高级别的哈西算法,如煞二、五、六二、唯一标识哈西算法可以生成唯一的标识符,用于唯一标识数据或者对象。 例如,在分布式系统中,哈西函数可以生成唯一的节点标识符,用于标识各个节点。三、数据较验哈西算法可以用于检测数据的完整性。在 数据传输过程中,接收方可以通过哈西函数重新计算数据的哈西值,并将其与发送方发送的哈西值进行比较,以检查数据是否在传输过程中被修改或损坏。 四、负载均衡哈西算法可以用于实现负载均衡,特别是在分布式系统中,通过使用哈西算法将不同的用户或者请求映射到不同的服务器上,可以实现负债的均衡分配,提高系统的性能和稳定性。五、数据分篇 哈西算法可以用于将大量数据分成小块,方便进行存储和管理。通过将数据哈西为固定长度的二进制串,并将这些二进制串存储在不同的位置,例如硬盘的不同扇区或者不同的服务器,可以实现数据的分布式存储和 管理。这种破解方法在实际中是极其困难的,因为哈西值的数量级非常大,破解的概率非常接近于零。同时,随着哈西算法复杂性的提高,破解所需要的时间和资源也会不断增加, 因此,在现实世界中几乎不可能实现。这种破解方法在实际中是极其困难的,因为哈西值的数量级非常大, 破解的概率非常接近于零。同时,随着哈西算法复杂性的提高,破解所需要的时间和资源也会不断增加,因此在现实世界中几乎不可能实现。
和 mac 戴密奥的哈西消息验证码是一种特殊的加密算法,它结合了 m d 五和煞一两种算法的优点,可以提供更高的安全性。和 mac 算法的安全性建立在哈西函数的安全性和密奥的保密性上,只有拥有密奥的人才能计算出正确的哈西值, 因此攻击者很难在没有妙的情况下破解他。 how max 算法的过程如下,一、 一、选定一个哈西函数 h, 如 m d 五或沙一。二选定一个 milk。 三、将消息 m 和庙 k 作为输入,利用哈西函数 h 计算消息的哈西值 h m k, 其中表示将 k 附在 m 后面。四、通信双方通过比较计算出的哈西值和接收到的哈西值来验证 消息的完整性和身份认证。 homex 的应用场景主要涉及数据完整性验证、用户身份验证和消息认证码生成等方面。 homex 的应用场景非常广泛,以下是一些常见的应用场景, 一、数据完整性验证在数据传输过程中,为了确保数据没有被篡改,可以使用哈麦克进行完整性验证。发送方使用共享的密奥对数据进行哈西运算, 生成认证码,并将认证码附加在数据中一起发送。接收方使用相同的密,要对接收到的数据进行哈西运算,并与接收到的认证码进行比对,如果一致,则说明数据完整无误。 二、用户身份验证在用户登录过程中,为了确保用户的身份真实有效,可以使用 max 进行身份验证。服务器在用户登录时生成一个随机的令牌,并将该令牌与用户的身份信息进行哈西运算,生成一个认证码,服务器将认证码发送给客户端,客户端在后续的请求中携带该认证码。 服务器接收到请求后,使用相同的密奥对携带的认证码进行哈西运算,并与服务器端生成的认证码进行比对,如果一致,则说明用户身份有效。 三、消息认证码生成 homex 法可以用于生成消息认证码,以确保消息的完整性和真实性。使用 homex 算法, 通信双方可以生成一个唯一的认证码,并将该认证码附加在消息中发送给对方。接收方使用相同的密奥对消息和认证码进行哈西运算, 并与接收到的认证码进行比对,如果一致,则说明消息完整且未被篡改。和麦克通常用于数据完整性验证、数字签名和身份验证等功能。它可以用于确保消息的完整性和身份认证。 例如, homex 可用于在传输敏感数据时验证数据的完整性和真实性,确保数据没有被篡改或窃取。 homex 算法结合了 md 五和刹一两种算法的优点,可以提供更高的安全性。
区块链知识里,我们经常能听到哈西、哈西算法,哈西函数,是不是听得一头雾水呢?别急,今天我们来讲讲哈西函数,先收藏再观看,养成好习惯。哈西函数是一个公开函数,也称为散链函数或杂凑函数。 它是一种单向密码体制,一个从铭文到密文的不可逆映射,只有加密的过程,没有解密的过程。那哈西函数有哪些特点呢?哈西函数有三大特点,防篡改能力、抗碰撞能力、单向性、 防串改能力。输入值。只要改变一点点,输出的哈西值就不同。抗碰撞能力,所谓碰撞,就是输入两串不同的数据,得到相同的输出 出值。单项性也叫隐秘性,出一串数据通过哈西算法得到输出值,但是没有反推的法子。你知道哈西函数怎么用吗?快来评论区告诉我!
哈西值就是给信息通过一定的方法赋予一个简化的代号,简化后的代号就是这段信息的哈西值。类似于让一个居民获得身份证号码, 居民的名字就是信息本身,身份证编号的方式就是哈西函数,而身份证号就是这段信息的哈西值。哈西值具有固定长度、唯一性,不可逆行的特点。 固定长度是指无论输入大或者小,输出都是固定的二百五十六比特的长度,这一特性在处理大量数据和交易时是至关重要的。并且任意一段信息只能有唯一的哈西直,这是哈西直的唯一性, 不可逆行。就好像榨汁机,我们可以把苹果榨成苹果汁和果渣,但不能把苹果汁和果渣还原成苹果,所以 从哈西直不可能推算出原本的七夕是什么。另外,哈西直还有非常强大的防串改能力,对于任意一个输入,哪怕是很小的改动,其哈西直的改变也会非常大。比如安 ipo 的哈西直是这样的, 而只改了一个大小写的安 ipo 的哈西值可能是这样的。所以这一特性对于区块链来说十分重要,因为他决定的区块链是不可改变的。
今天我们要讲的内容是区块链中的密码学,哈西算法。我们之前讲过,区块链的四大核心技术分别是密码学、分布式账本、共识机制、智能合约,而密 马学又是其中最重要的一部分,因为密码学可以说是区块链的基石,其他技术正是以此为地基,才搭建出区块链这座高楼大厦。密码学主要有两个部分,一个是哈西算法,另一个是非对称加密。哈西算法是什么?简单来说,哈西算法就是一种特殊的函数,不论 输入多长的一串字符,只要通过这个函数就可以得到一个固定长度的输出值,像身份证号一样,永远都是十八位,全国唯一,就叫做哈西值。哈西算法有三个特点,他们赋予了区块链不可篡改、匿名等特性,保障了整个区 快练体系的安全。哈西算法的第一个特点是具有单向性,比方说可以输入我们的数据得到一个哈西直,但哈西直是无法返回到我们的数据,这就是单向性,也正是基于这一点,有效保护了我们信息的安全性。哈西算法的第二个特点是不可算改,对于 任意一个输入,哪怕是很小的改动,其哈西直的变化也会非常大,在区块与区块的连接中就起到了关键性的作用,每一个区块的哈西直作为标准,除非有人能破解整条链上的所有哈西直,在列 上就不可能进行算改。哈西算法的第三个特点是抗碰撞,碰撞就是输入两个不同的数据,最后得到了一个相同的输出,跟我 我们逛街时候撞衫一样,大部分输入都能得到一个独一无二的输出。在区块链中,任何一笔交易都是依托于哈西算法生成的。无论我这笔转账转了多少钱,或转给了多少个人,这个大账本中都是唯一的存在。
哈西算法哈西冲突的解决方案?首先我们了解一下哈西冲突的基本概念,以 gdk 当中的哈西迈克为例, 哈西迈普的实线是以散列表为基础,当元素 a 和元素 b 通过同一个哈西算法 进行哈西运算,并且定位到哈西表当中相同的位置是即产生了哈西冲突,那么这种冲突可能是哈西算法得到的值相同产生的等值碰撞,或者定位的地址相同产生的等值碰撞。 那么看一下解决方案,第一个解决方案,链接之法哈西迈普中呢,他会采用链表来记录当前发生哈西冲突的元素,具有处理 简单的特点,但会造成空间浪费,也要考虑链表过长的这个缺陷,所以哈西麦普用红黑数来优化这一问题。解决方式二,开放地址法,也就是所有的地址对所有的值开放。当哈西表中存在某一些元素, 当一个元素需要插入时,产生冲突的时候,通过主次向下找,直到找到不冲突的地址,成为现行探测的方式。 那么可以扩展现行方式的这个不长,通过平方累加的方式进行跳跃查找不冲突的元素成为在平方探测, 也可以通过随机函数来计算,随机数加上哈欠冲突的位置来得到下一个位置,成为随机探测。 第三个方法是在哈西法,在哈西法指的是冲突的哈西,指通过再次的哈西运算处理,直到没有哈西冲突。 最后一种方式是建立公共溢出区的方式,将所有冲突的哈西元素呢放入到一个公共溢出区去处理。
文件的身份证在平时下载操作系统镜像文件时,一般镜像员网站会伴随镜像给到如图所示的少一、少二、五、六等一段字不揣 这些字符串是利用安全散列算法对原文件进行计算得到的。如果原文件发生改动,即使是小到一个自己的变化,计算出的值会与变动前的值产生较大的差距。 利用这个特点,可以将下载好的镜像进行相同方式都计算,在于网站提供的值进行比较,用以确认文件是否相同。习惯上我们把这个纸称为泰式纸或哈锡纸。 在 mins 中可以通过命令来方便的计算一个文件的哈戏曲。此处我们新建一个文本文档,在里面随便添加文字 保存退出后分别使用 m、 d 五和上亿两种算法进行计算。 得到两组之后,用另一对文件进行修改,将其中一个 l 替换为一,保存推出。 再次进行两组计算, 会发现哈西直前后发生了巨大变动。目前常用的算法有少一、少二、 am 五等,广泛运用于文件传输、教练文件标志、服务器铺在均衡数据、分布式存储等场景中。
大家好,今天要讲的内容是哈西表 hash table。 先来看一个简单的问题,已知数组 a 其中保存了 n 个整数,我们要从数组 a 中查找整数 k, 确定 k 是否存在。数组 a 中 最朴素的方法是使用循环,将 k 和 a 中的每个整数按顺序比较,如果相等,直接返回一,循环结束后返回零。 这种方法虽然简单直接,但是效率很低。如果数组 a 中有大量元素,并且需要多次查找时,那么这种方法的效率将无法容忍。 例如,在数组 a 中保存了七、十、七、五等数字,如果循环查找一、二、三等,等到十,这十个数字是否在数组 a 中, 那么就需要调用十次 fantasy 函数进行查找。所以每次调用 fantasy 函数都要比较 n 次,因此查询的时间复杂度是大 on。 如果查询次数也为 n, 那么整体的复杂度就是大 on 的平方。 实际上,我们希望设计一种算法,使每次查找的时间复杂度为常数级 w 一,这样查找效率 与待查找表中元素数量就是无关的。那么这种方法就是今天要介绍的阿西表 ash table。 先来看一个哈西表的特例情况,假设待处理数据的范围是零到九十九,此时可以直接使用一个 a 一百数组,用它的下标来记录零到九十九之间的这一百个元素是否出现,出现了多少次。 例如,数字五出现了一次,那么 a 五就等于一九出现了三次, a 九就等于三。这是最简单的哈西思想 样例代码如下,在使用哈西表之前,需要先创建哈西表,在内函数中设置一个长度是一百的数组 table 初始化,其中的元素为零,作为哈西表的表体。然后使用函数 create has 创建哈西表。 在 create hash 函数中,使用 i 电力数组 a 中的全部 n 个元素,通过 table ai 加加。利用 table 数组的下标记录数字 ai 出现的次数。 例如,当 i 等于零时, a 零等于七, table 七加加, i 等于一, a 一等于十七, table 十七加加, i 等 等于二, a 二等于五, table 五加加,这样就记录了七十七、五,这三个数字各出现了一次。 完成哈奇表的建立后,便利 table 数组得到每个数据出现的次数。如果 table i 大于零,那么打印 i 值出现的次数 table i。 例如,二出现了两次,三出现了一次,五出现了两次等等。 从哈奇表中查找某个 k 值是否存在,非常的简单,直接返回 table key 不等于零的结果就可以了。也就是如果 table key 不是零,那么返回一,否则 返回零在内函数中,我们使用函数 find k 查找一到十是否出现在数数 a 中,这里给出了对应的运行结果。 如果数组 a 中的数据范围不是零到九十九,而是 int 型,从负的二到三十一次方,到二到三十一次方减一, 或者 a 是浮点,数字符串,甚至是数组对象等等。更复杂的元素应该怎么样处理呢? 这时就需要使用哈奇函数将数据转换为表长范围内的整数, 将这个整数作为数组下标,访问哈西表。对于整数型数据,可以直接将它取于表长,得到对应的数组下标。 例如,如果要将五二三插入到长度为一百的 table 中,用五二三取一百等于二十三,再将 table 二十三加一,那么 table 的下标二十三就记录了五二三这个数字。 如果数据是字符串,则需要专门的设计哈奇函数。 最简单的,比如便利字符串中的字符,将他们的 as, car 码相加得到整数,再取于表长得到哈锡纸。 例如字符串 a、 b、 c 中的 a、 b、 c 三个字符 ask 二码分别是九十七、九十八、九十九,将它们相加,得到二百九十四。取于一百是九十四, 那么 table 九十四就记录了字符串 a、 b, c 是否出现 阿西函数可能将不同的数据映射到同一个数组下标上,这时就发生了冲突。例如按照刚才的方法,五二三和二十三会同时映射到 k 包二十三, a, b, c 和 c, b, a 会 同时映射到 table 九十四。当冲突发生时,就会导致查询出现错误,例如此时我们查询一二三二二三三二三,或者 a、 b, c, c, b, a, a, c, b 等等,都会返回真, 但并不能确定具体是哪个数据真的出现了。 关于哈西表冲突的解决,有很多经典的方法,例如线性探测法、拉链法等等,都可以解决这一问题。 实际上,解决哈西表的冲突是哈西算法设计中最为重要的部分,后面也会为大家介绍相关的内容, 那么到这里,哈西表 hostable 就讲完了,感谢大家的观看,我们下节课再会。
