极客时间课程《数据结构与算法之美》笔记07 - 哈希算法

哈希算法-如何防止数据库中的用户信息被脱库

定义和原理:将任意长度的二进制值串映射为固定长度的二进制值串算法

要求:数据库

  • 不能反向推导(单向哈希算法)
  • 对输入数据敏感,哪怕只修改了一个Bit,最后获得的哈希值也大不相同。
  • 散列冲突几率要很小。
  • 执行效率要高,针对较长的文本,也能很快地计算出哈希值。

哈希算法的应用不少,常见有:安全加密、惟一标识、数据校验、散列函数、负载均衡、数据分片、分布式存储缓存

惟一标识

在海量的图片信息中,搜索一张图是否存在。任何文件在计算机中均可以表示成二进制码串,将图片的二进制码串开头、中间、结尾分别取100个字节,而后再经过哈希获得惟一标识。(减轻工做量)安全

数据校验

BT下载的时候会作数据校验。服务器

散列函数

防范字典攻击引入一个盐(salt),跟用户密码组合在一块儿,增长密码复杂度,而后用组合后的字符串来作哈希算法加密,将它存储到数据库中,进一步增长破解的难度。
除此以外,一些公司采用的方法:不管密码长度多少,采用计算hash时间都固定或者足够慢的算法,好比:
PBKDF2WithHmacSHA1。避免因计算时间不同而泄露字符串长度信息。负载均衡

负载均衡

负载均衡须要维护一个映射表,哈希算法能很方便地维护这个功能,经过客户端IP或者会话ID计算哈希,经过和服务器列表的大小进行取模运算,最终获得服务器编号。分布式

数据分片

统计“搜索关键词”出现的次数,1T的文件日志,记录用户的关键词,快速统计出每一个关键词的被搜索次数。
先对数据进行分片,而后采用多台机器处理的方法,提高速度。关键词计算哈希,跟n取模,最终获得机器编号。同一个关键词会被分配在同一个机器上。
这个处理过程也是MapReduce的基本设计思想函数

分布式存储

本来10台服务器,增长到12台。原有哈希可能失效,从新计算缓存产生雪崩效应。
一致性哈希算法:假设有K台机器,将整个范围划分红m个小区间(m远大于k)加密

相关文章
相关标签/搜索