hash算法的应用

hash算法的标准

  1. 不能逆向推导出原数据
  2. 对输入数据很敏感,改了一bit,最后得到的hash值也不相同
  3. 散列冲突概率很小
  4. 算法执行效率高

应用场景

安全加密

我们在保存数据时候可以对数据用hash函数进行加密比如:MD5、SHA、DES、AES

hash算法做安全加密应该尽量避免hash冲突,但是也不可能完全避免,但是概率很低比如MD5的范围如下:

1
2^128=340282366920938463463374607431768211456

加密算法越高级效果越好,但是相应的性能会越差

唯一标识

我们可以通过hash函数作为数据的唯一标识,比如对一个图片的搜索我们如果一个个比对他们的2进制码会很耗时,我们可以抽样踩点进行hash计算,然后hash相同的在去比较是否。

数据校验

大数据可能会被分块保存,我们只需要记录每一块的hash值,当文件块下载完成后进行hash值的校验,校验文件是否完整

散列函数

因为hash函数冲突的概率很低,所以我们可以利用hash作为散列函数

负载均衡

session-sticky模式的访问,对于客户端请求hash之后和服务器个数取模,这样保证每个请求都打到同一个后端

数据分片

对于海量数据我们可以将数据hash之后分散到各服务器节点中,这样在计算的时候根据数据hash取模到某个服务器节点计算(map-reduce思想)

分布式存储

海量数据根据数据的hash分片落到某一个节点上,理论上可以存储无数的数据,常用于nosql的存储,不过要注意一致性hash,防止节点变更大量的数据进行rehash。