還記得2011年CSDN的「脫庫」事件嗎?當時,CSDN網站被黑客攻擊,超過600萬用戶的註冊郵箱和密碼明問被泄露,不少網友對CSDN明⽂保存用戶密碼行爲產生了不滿。java
若是你是CSDN的⼀名易程師,你會如何存儲用戶密碼這麼重要的數據嗎?僅僅MD5加密一下存儲就夠了嗎? 要想搞清楚這個問題,就要先弄明白哈希算法。算法
哈希算法歷史悠久,業界著名的哈希算法也有不少,好比MD五、SHA等。在咱們平時的開發中,基本上都是拿現成的直接用。因此,我今天不會重點剖析哈希算法的原理安全
,也不會教你如何設計一個哈希算法,而是從實戰的⻆度告訴你,在實際的開發中,咱們該如何用哈希算法解決問題。函數
鴿巢原理網站
哈希算法產生的哈希值的長度是固定且有限的加密
而咱們要哈希的數據是無窮的,基於鴿巢原理spa
2^128=340282366920938463463374607431768211456
衝突的機率很小設計