hash算法与一致性hash算法

# 什么是hash?

hash也被称作散列、哈希,其基本原理是将任意长度的输入,通过hash函数映射成固定长度的输出,开发中使用MD5、SHA都是经典hash算法。常被用来验证数据是否被篡改。

# hash算法使用场景

# 哈希函数

在哈希函数中可以使用哈希算法对key值进行散列,根据hash值确定该key的散列表存储位置,需要注意散列表的平均性。

# 唯一标识

在绝大部分情况下,hash算法针对不同的二进制内容生成的hash值是不一样的,但由于hash会导致hash碰撞(冲突),因此可能存在hash值相同,而二进制内容不同的情况发生,这点需要注意。

# 数据校验

当一个软件打包完成后,使用hash算法,便可得到该软件包的二进制值,可以用来判断软件包是否被篡改。但此校验并无完全正确,存在出错的可能。

# 安全加密

由于哈希具有不可逆性,黑客原则上是无法通过hash值反解其原本内容;相同的二进制内容,hash值相同。针对这两点特性,可以将其应用在敏感数据的安全性方面,如用户的密码存储等。当二进制内容过于简单时,黑客很可能会通过爆破方式进行破解,可引入“盐”,简单说就是一串用户自定义内容,防止黑客很容易破解。

# 分布式

Licensed under CC BY-NC-SA 4.0