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

哈希(hash) - 哈希算法的应用,第1张

通过之前的学习,我们已经了解了哈希函数在散列表中的应用,哈希函数就是哈希算法的一个应用。那么在这里给出哈希的定义: 将任意长度的二进制值串映射为固定长度的二进制值串,这个映射规则就是哈希算法,得到的二进制值串就是哈希值

要设计一个好的哈希算法并不容易,它应该满足以下几点要求:

哈希算法的应用非常广泛,在这里就介绍七点应用:

有很多著名的哈希加密算法:MD5、SHA、DES它们都是通过哈希进行加密的算法。

对于加密的哈希算法来说,有两点十分重要:一是很难根据哈希值反推导出原始数据;二是散列冲突的概率要很小。

当然,哈希算法不可能排除散列冲突的可能,这用数学中的 鸽巢原理 就可以很好解释。以MD5算法来说,得到的哈希值为一个 128 位的二进制数,它的数据容量最多为 2 128 bit,如果超过这个数据量,必然会出现散列冲突。

在加密解密领域没有绝对安全的算法,一般来说,只要解密的计算量极其庞大,我们就可以认为这种加密方法是较为安全的。

假设我们有100万个,如果我们在中寻找某一个是非常耗时的,这是我们就可以使用哈希算法的原理为设置唯一标识。比如,我们可以从的二进制码串开头取100个字节,从中间取100个字节,从结尾取100个字节,然后将它们合并,并使用哈希算法计算得到一个哈希值,将其作为的唯一标识。

使用这个唯一标识判断是否在图库中,这可以减少甚多工作量。

在传输消息的过程中,我们担心通信数据被人篡改,这时就可以使用哈希函数进行数据校验。比如BT协议中就使用哈希栓发进行数据校验。

在散列表那一篇中我们就讲过散列函数的应用,相比于其它应用,散列函数对于散列算法冲突的要求低很多(我们可以通过开放寻址法或链表法解决冲突),同时散列函数对于散列算法是否能逆向解密也并不关心。

散列函数比较在意函数的执行效率,至于其它要求,在之前的我们已经讲过,就不再赘述了。

接下来的三个应用主要是在分布式系统中的应用

复杂均衡的算法很多,如何实现一个会话粘滞的负载均衡算法呢?也就是说,我们需要在同一个客户端上,在一次会话中的所有请求都路由到同一个服务器上。

最简单的办法是我们根据客户端的 IP 地址或会话 ID 创建一个映射关系。但是这样很浪费内存,客户端上线下线,服务器扩容等都会导致映射失效,维护成本很大。

借助哈希算法,我们可以很轻松的解决这些问题:对客户端的 IP 地址或会话 ID 计算哈希值,将取得的哈希值域服务器的列表的大小进行取模运算,最后得到的值就是被路由到的服务器的编号。

假设有一个非常大的日志文件,里面记录了用户的搜索关键词,我们想要快速统计出每个关键词被搜索的次数,该怎么做呢?

分析一下,这个问题有两个难点:一是搜索日志很大,没办法放到一台机器的内存中;二是如果用一台机器处理这么大的数据,处理时间会很长。

针对这两个难点,我们可以先对数据进行分片,然后使用多台机器处理,提高处理速度。具体思路:使用 n 台机器并行处理,从日志文件中读出每个搜索关键词,通过哈希函数计算哈希值,然后用 n 取模,最终得到的值就是被分配的机器编号。

这样,相同的关键词被分配到了相同的机器上,不同机器只要记录属于自己那部分的关键词的出现次数,最终合并不同机器上的结果即可。

针对这种海量数据的处理问题,我们都可以采用多机分布式处理。借助这种分片思路,可以突破单机内存、CPU等资源的限制。

处理思路和上面出现的思路类似:对数据进行哈希运算,对机器数取模,最终将存储数据(可能是硬盘存储,或者是缓存分配)分配到不同的机器上。

你可以看一下上图,你会发现之前存储的数据在新的存储规则下全部失效,这种情况是灾难性的。面对这种情况,我们就需要使用一致性哈希算法。

哈希算法是应用非常广泛的算法,你可以回顾上面的七个应用感受一下。

其实在这里我想说的是一个思想: 用优势弥补不足

例如,在计算机中,数据的计算主要依赖 CPU ,数据的存储交换主要依赖内存。两者一起配合才能实现各种功能,而两者在性能上依然无法匹配,这种差距主要是: CPU运算性能对内存的要求远高于现在的内存能提供的性能。

也就是说,CPU运算很快,内存相对较慢,为了抹平这种差距,工程师们想了很多方法。在我看来,散列表的使用就是利用电脑的高计算性能(优势)去弥补内存速度(不足)的不足,你仔细思考散列表的执行过程,就会明白我的意思。

以上就是哈希的全部内容

哈希说白了就是一种解决冲突的办法,越好的哈希函数得到的结果就越不容易产生冲突比如给定一些输入x1,x2 xn,使用哈希函数后得出y1,y2yn,y1 ~ yn 中相同的数所占的比例越小,那么这个哈希函数就越好

再来看这道题目,A,B,C,D分别是4个哈希函数,题目的要求是输入为(2,6,10,17)时,哈希函数的输出各自不相同

A、输出分别为 2,6,10,6,有相同,不满足

B、输出分别为4,3,1,3,有相同,不满足

C、输出分别为4,1,9,1,有相同,不满足

D、输出分别为1,2,3,4,没有相同,满足

所以答案为D

NIST和IACR。

1、NIST(美国国家标准与技术研究院)网站,发布了许多密码学标准和相关文档,其中包括哈希函数的PH曲线,你可以在NIST的网站上找到相关的文档和标准。

2、ACR(国际密码学研究协会)网站,IACR是一个专注于密码学研究的组织,他们的网站上有很多密码学相关的研究论文和技术报告,包括哈希函数的PH曲线。

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/meirong/2665145.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-12-21
下一篇2023-12-21

随机推荐

  • 妮维雅去黑头磨砂洁面乳用起来怎么样?

    每个人都希望自己能拥有白皙光滑的肌肤,但是,生活中有很多人的肌肤都出现问题,比如有些人的鼻子上长了黑头,那你们知道对于男性朋友来说,有哪些去黑头的方法呢?估计很多人都还不知道,下面,给大家具体介绍一下妮维雅去黑头磨砂洁面乳。1、妮维雅去黑头

    2024-04-15
    57800
  • 国产天气丹几个系列什么功效

    天气丹的五个系列拱辰享系列,津率享系列,美白系列,水妍系列,天气丹系列。功效如下,天气丹拱辰享系列,适合25至30岁的人使用,对皮肤干燥,发黄有着显著的效果,它里面含有的黄精和拱辰丹成分,能快速被皮肤吸收,有效促进细胞再生,保持肌肤的弹性,

    2024-04-15
    56700
  • 发之萃这个品牌的防脱育发套盒怎么样?

    效果因人而异。产品特点:发之萃防脱育发套盒选取本草精华,何首乌、侧伯叶、川穹、当归等,采用高能活性萃取工艺精制而成,其活性成分能快速改善毛囊生态环境,改善头皮状况,激活毛囊,具有头发防脱、促进毛发生长、促进毛发的作用,长期用会使头发乌黑柔顺

    2024-04-15
    57200
  • 武惠妃杨贵妃,唐玄宗到底爱武惠妃,还是爱杨贵妃?

    唐玄宗到底爱武惠妃,还是爱杨贵妃 唐玄宗曾经深爱过两个女人,她们分别是武惠妃和杨贵妃。先来说说两人的身世,武惠妃是恒安王武攸止(武则天堂侄)的女儿。生来金枝玉叶,但由于父母病逝,而武周王朝又渐垮台,而沦落为一个小宫女,但她娇丽迷人的容貌和超

    2024-04-15
    40000
  • sk2清莹露怎么用

          sk2清莹露是属于清洁水,就是洗完脸,第一个用的,是给皮肤一个再次清洁的作用。sk2清莹露用在神仙水之前,洁面后第一步是SK-I      sk2清莹露是SK-II品牌出品的明星产品之一,一般sk2清莹露和sk2神仙水搭配使用,

    2024-04-15
    45000
  • 艾灸盒怎么用?

    艾灸盒怎么用?艾灸盒有很多种,我们平时最常见的要属随身灸艾灸盒,这种艾灸盒有铜制的也有铁制的,一般大多数选择用铁质的,下面给大家详细介绍一下铁制的随身灸,它的具体用法:首先把艾灸盒打开,把艾条剪成一小段,插到里面的支架上面,然后点燃艾灸条,

    2024-04-15
    41300
  • 妮维雅和欧莱雅哪个好?两者有什么不同吗?

    个人觉得欧莱雅好用,两者区别在于妮维雅只具有基本的保湿功效。妮维雅基本只有保湿功效,对每个人都适用。卡尼尔偏属年轻人品牌。而欧莱雅是历史悠久的知名专业化妆品品牌,对女性肌肤研究更细化,因此才能研发出针对不同年龄段的产品。毕竟小年轻依仗年龄优

    2024-04-15
    58900

发表评论

登录后才能评论
保存