什么是hash算法

哈希算法的定义

所谓的哈希算法其实并不是指某一个特定的算法, 而是指一类算法的统称. 它的定义是:

将任意长度的输入转换为固定长度的输出.
哈希算法最有名的就是MD5算法.

哈希算法的应用场景
  1. 用于加密

    截图.
    屏幕快照 2018-03-20 上午11.15.53.png

把加密后的字符串存储在数据库.
一是要求原文和加密后的字符串是一一对应的.
二是要求不可逆, 这样即使别人拿到了这个数据, 也无法还原出原始密码.

  1. 文件对比, 百度云盘急速秒传的实现原理.


    屏幕快照 2018-03-20 上午11.16.56.png
屏幕快照 2018-03-20 上午11.17.19.png
屏幕快照 2018-03-20 上午11.19.13.png

原理:
首先服务器上已经有了很多的电影文件, 服务器把每个电影都计算出它对应的hash值. 当客户端要上传某个电影时, 首先在客户端计算出这个电影的hash值, 首先把这个hash值上传到服务器, 如果服务器发现已经存储了这个hash值对应的电影文件, 那就直接在服务器copy一个引用关系, 把这个引用关系保存在客户端的账户下就可以了, 实际上并没有做真正的上传工作. 所以你会发现有时候上传一个5,6G的电影只需要几秒钟.

  1. 散列, HashMap的实现原理.


    屏幕快照 2018-03-20 上午11.40.14.png

注: 根据这个计算后的hash值, 142357, 来确定这个元素在内存中具体的存储位置.

HashMap的优点是, 提取元素的速度非常快.

为什么叫散列呢? 我们希望算法把key处理后得到的下标值, 越分散越好, 所以叫做散列.

refer to:
http://www.miaodongketang.cn/views/category/category.html#cno=001

你可能感兴趣的:(什么是hash算法)