算法 -- 哈希算法学习

目录

一、哈希算法简介

二、哈希算法的应用

1、安全加密

2、唯一标识

3、数据校验

4、散列函数

5、负载均衡

6、数据分片

7、分布式存储

三、一致性哈希算法

四、说明


一、哈希算法简介

简单来说,就是将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值

哈希算法的特点:

  • 从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法);
  • 对输入数据非常敏感,哪怕原始数据只修改了一个 Bit,最后得到的哈希值也大不相同;
  • 散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小;哈希算法的执行效率要尽量高效,针对较长的文本,也能快速地计算出哈希值。

二、哈希算法的应用

1、安全加密

常见的安全加密算法有:

加密方式

常见算法

优点

缺点

哈希算法

MD5、SHA

加解密快速,使用简单;

无法做到零冲突,即不同的数据哈希值可能是相同的。比如MD5(128位)最多能表示2^128个数据

对称加密

DES、3DES、AES、TDEA、RC5、Blowfish、IDEA、...

加解密快速,使用简单;

常用于对大量数据加密

密码/密钥需要在网络上传输,不安全;秘钥管理困难;安全等级依赖秘钥长度

非对称加密

RSA、ECC、...

只有公钥在网络上传输,私钥留在本地,相对安全

加解密比较慢,使用复杂;有被劫持风险

混合模式(对称和非对称)

 

使用对称加密模式,但是对加密的密码使用非对称加密方式传输

 

2、唯一标识

哈希算法可以对大数据做信息摘要,通过一个较短的二进制编码来表示很大的数据。

3、数据校验

用于校验数据的完整性和正确性。

4、散列函数

5、负载均衡

6、数据分片

7、分布式存储

当有海量的数据需要存储时,为了提高读写的速度、写入能力,一般采用分布式的方法来存储数据,比如分布式缓存。即将海量的数据分布缓存到多台机器上面。

比如有1000W张图片需要缓存,假如要使用A、B、C 这3台服务器来缓存,而且图片的名称是唯一的,那么就可以就可以对【图片的名称】计算哈希值,然后对服务器数量取模;那么

hash(图片名称) % 3 = 0 的图片将会被存储到A服务器上

hash(图片名称) % 3 = 1 的图片将会被存储到B服务器上

hash(图片名称) % 3 = 2 的图片将会被存储到C服务器上

但是如果当图片数量变化,服务器数量发生变化时,几乎所有的图片的缓存位置都会发生变化,上面得方法就不太合适了。这是就需要采用一致性哈希算法来解决这个问题了。

三、一致性哈希算法

这位大佬讲得非常的通俗易懂,膜拜膜拜

http://www.zsythink.net/archives/1182

四、说明

本文部分内容为学习王争老师在极客时间专栏——《数据结构与算法之美》的学习总结。仅仅是个人学习备忘,如有侵犯权益,请联系我,立即修改。

发布了35 篇原创文章 · 获赞 22 · 访问量 1132

猜你喜欢

转载自blog.csdn.net/m0_37845735/article/details/103765683