哈希(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

随机推荐

  • 孕妇可以用的水乳牌子

    孕妇可以用的水乳牌子  孕妇可以用的水乳牌子,很多人都知道,怀孕后是有很多的禁忌需要注意的,特别是护肤品方面,有些成分用了是对胎儿有影响的,所以一定要注意,下面是孕妇可以用的水乳牌子。孕妇可以用的水乳牌

    2024-04-15
    37300
  • 妮维雅防晒喷雾和妮维雅防晒紧肤精华有什么区别?哪个防晒效果更好?

    两者相比当然是妮维雅防晒喷雾防晒好,但以专业美容来看的话选择防晒最好是防晒霜对皮肤伤害小些,防晒喷雾防晒是物理防晒最好不要直接接触皮肤,因为防晒霜本身就添加防水剂还有化学成分,所以一般我们都建议在擦防晒霜之前要擦霜这样对皮肤的伤害到最低又能

    2024-04-15
    35300
  • 兰蔻肌底液的功效,小黑瓶肌底精华液功效

    兰蔻有很多的护肤品都非常受欢迎,比如兰蔻的精华液就是一种效果很好的产品。有很多条件比较好的女生都会购买兰蔻的肌底液来使用。而且兰蔻肌底液的功效也非常的不错。那么,兰蔻肌底液的功效,小黑瓶肌底精华液的功效是什么?兰蔻小黑瓶的功效有抗衰老、抗皱

    2024-04-15
    43300
  • 有没有好的防晒乳呢?

    1、Nivea妮维雅水感防晒啫喱SPF50这个妮维雅水感防晒是目前为止我用得最多的一款防晒,找代购买80人民币左右有140g的容量,所以大量抹在胳膊上腿上也不心疼。它挤出来是半水状半乳液状的质地,不像那种厚重的防晒,很水润,极度容易推开,抹

    2024-04-15
    28900
  • (爱博新)帕博西尼哌柏西利仿制药有哪种?

    印泰海外健康 商品名:爱博新IBRANCE 通用名:哌柏西利胶囊 英文名称:PalbociclibCapsules 汉语拼音:PaiBoXiLiJiaoNang 【哌柏西利成份】 本品主要成份为哌柏西利其化学名称为:6-乙酰基-8-环戊基

    2024-04-15
    16700
  • 精华液排名前十名推荐

    精华液排名前十名推荐为赫莲娜夜间修护精华、海蓝之谜修护精粹液、SK-II肌因光蕴环采钻白精华露、雅诗兰黛特润修护肌透精华露、兰蔻小黑瓶面部精华肌底液、伊丽莎白雅顿新生时空胶囊、资生堂红妍肌活精华露、倩碧双星淡斑精华、欧莱雅青春密码面部精华液

    2024-04-15
    28300
  • 李佳琦直播预告清单1.12 李佳琦直播预告1.12

    李佳琦直播预告清单112 李佳琦直播预告112。李佳琦1月12日晚间18点直播美妆专场,那么本次李佳琦会给我们带来什么商品呢下面小编给大家带来李佳琦1月12日直播的清单预告,一起来看看吧。李佳琦直播预告清单112一、直播时间李佳琦 1月12

    2024-04-15
    28800

发表评论

登录后才能评论
保存