哈希(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
    1051800
  • 美白补水精华液排行榜前?

    希思黎抗皱修活精华希思黎这款精华液中蕴含大量的活性物质,再结合植物配方的效果,可以更全面的缓解肌肤干燥缺水的状况,细腻水润的质地也能增强肌肤的吸收能力,让肤质呈现出自然的水润感。珍漾水光精华最值得入手的一款,必买推荐!得过好几次护肤金奖,

    2024-04-15
    60400
  • 这个妮维雅产品上的英文是什么意思?

    smooth sensation丝滑莹亮润肤乳液for irresistibly smooth skin无法抗拒的光滑皮肤smoothes softens tones 光滑,柔软,亮丽with ginkgo,shea,butter and

    2024-04-15
    61200
  • 盲盒现在哪些渠道效果比较好?

    展开3全部事实上,盲盒的玩法并不稀奇,尤其容易理解,花钱拆盒得结果。和我们线下买**,大转盘抽奖只是形式上的不同,主要是利用人性的好奇心和贪婪。列举一下三个进货渠道:1、16881688是中国最大的线上批发商城,几乎可以满足你对货源

    2024-04-15
    49900
  • 2020年飞天茅台与属相茅台区别,茅台生肖酒的收 茅台飞天和五星的区

    提起2020年飞天茅台与属相茅台区别,大家都知道,有人问茅台生肖酒的收 茅台飞天和五星的区别,另外,还有人想问飞天茅台0743和15635有什么区别我有一瓶2011年的飞天,第三排写着是15635,不是,你知道这是怎么回事?其实飞天茅台和

    2024-04-15
    45000
  • 羽西鎏金粉底液怎么样,羽西虫草焕臻凝时修护精华液

    随着追求生活品质的理念越来越深入人心,很多的女性更喜欢选择高端的化妆品来使自己的容颜更加美丽,其中羽西这一品牌就深得女性消费者的关注,那么羽西鎏金粉底液使用后感觉怎么样羽西虫草焕臻凝时修护精华液又具有怎样的作用呢?羽西鎏金粉底液属于一种高遮

    2024-04-15
    55000
  • 精华液和精华露有什么区别?

    精华液和精华露的区别在于质地、功效、适用人群等方面。1、质地:精华液的质地比较轻薄,适合油性和混合性皮肤;而精华露的质地比较厚重,适合干性皮肤。2、功效:精华液主要是为了滋润肌肤、改善肤色等;而精华露则是为了修复肌肤、提亮肤色、紧致肌肤等。

    2024-04-15
    44900

发表评论

登录后才能评论
保存