数据结构与算法之美学习笔记:第二十一讲
还记得2011年CSDN的“脱库”事件吗?当时,CSDN网站被黑客攻击,超过600万用户的注册邮箱和密码明问被泄露,很多网友对CSDN明⽂保存用户密码行为产生了不满。
如果你是CSDN的⼀名易程师,你会如何存储用户密码这么重要的数据吗?仅仅MD5加密一下存储就够了吗? 要想搞清楚这个问题,就要先弄明白哈希算法。
哈希算法历史悠久,业界著名的哈希算法也有很多,比如MD5、SHA等。在我们平时的开发中,基本上都是拿现成的直接用。所以,我今天不会重点剖析哈希算法的原理
,也不会教你如何设计一个哈希算法,而是从实战的⻆度告诉你,在实际的开发中,我们该如何用哈希算法解决问题。
一、什么是哈希算法
1、基本概念
2、如何设计一个优秀的哈希算法
3、MD5案例
4、哈希算法的常见应用
二、应用一:安全加密
1、常用的加密哈希算法
2、为什么哈希算法无法做到零冲突
鸽巢原理
哈希算法产生的哈希值的长度是固定且有限的
而我们要哈希的数据是无穷的,基于鸽巢原理
2^128=340282366920938463463374607431768211456
冲突的概率很小
3、没有绝对安全的加密
三、应用二:唯一标识
1、图片搜索案例
2、如何搜索
3、更高效
四、应用三:数据校验
1、BT软件案例
2、最终合并的电影无法观看
3、如何校验文件块的安全、正确、完整
五、散列函数
1、对散列算法冲突要求低
2、散列函数会关注散列表的那些方面
六、解答开篇 & 内容小结
1、用户信息被“脱裤”
2、针对字典攻击
作者:罗阿红
出处:http://www.cnblogs.com/luoahong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。