定义和原理:将任意长度的二进制值串映射为固定长度的二进制值串算法
要求:数据库
哈希算法的应用不少,常见有:安全加密、惟一标识、数据校验、散列函数、负载均衡、数据分片、分布式存储缓存
在海量的图片信息中,搜索一张图是否存在。任何文件在计算机中均可以表示成二进制码串,将图片的二进制码串开头、中间、结尾分别取100个字节,而后再经过哈希获得惟一标识。(减轻工做量)安全
BT下载的时候会作数据校验。服务器
防范字典攻击引入一个盐(salt),跟用户密码组合在一块儿,增长密码复杂度,而后用组合后的字符串来作哈希算法加密,将它存储到数据库中,进一步增长破解的难度。
除此以外,一些公司采用的方法:不管密码长度多少,采用计算hash时间都固定或者足够慢的算法,好比:
PBKDF2WithHmacSHA1。避免因计算时间不同而泄露字符串长度信息。负载均衡
负载均衡须要维护一个映射表,哈希算法能很方便地维护这个功能,经过客户端IP或者会话ID计算哈希,经过和服务器列表的大小进行取模运算,最终获得服务器编号。分布式
统计“搜索关键词”出现的次数,1T的文件日志,记录用户的关键词,快速统计出每一个关键词的被搜索次数。
先对数据进行分片,而后采用多台机器处理的方法,提高速度。关键词计算哈希,跟n取模,最终获得机器编号。同一个关键词会被分配在同一个机器上。
这个处理过程也是MapReduce的基本设计思想函数
本来10台服务器,增长到12台。原有哈希可能失效,从新计算缓存产生雪崩效应。
一致性哈希算法:假设有K台机器,将整个范围划分红m个小区间(m远大于k)加密