还记得2011年CSDN的“脱库”事件吗?当时,CSDN网站被黑客攻击,超过600万用户的注册邮箱和密码明问被泄露,很多网友对CSDN明⽂保存用户密码行为产生了不满。
如果你是CSDN的⼀名易程师,你会如何存储用户密码这么重要的数据吗?仅仅MD5加密一下存储就够了吗? 要想搞清楚这个问题,就要先弄明白哈希算法。
哈希算法历史悠久,业界著名的哈希算法也有很多,比如MD5、SHA等。在我们平时的开发中,基本上都是拿现成的直接用。所以,我今天不会重点剖析哈希算法的原理
,也不会教你如何设计一个哈希算法,而是从实战的⻆度告诉你,在实际的开发中,我们该如何用哈希算法解决问题。
一、什么是哈希算法
1、基本概念
2、如何设计一个优秀的哈希算法
3、MD5案例
4、哈希算法的常见应用
二、应用一:安全加密
1、常用的加密哈希算法
2、为什么哈希算法无法做到零冲突
鸽巢原理
哈希算法产生的哈希值的长度是固定且有限的
而我们要哈希的数据是无穷的,基于鸽巢原理
2^128=340282366920938463463374607431768211456
冲突的概率很小