有一種攻擊叫彩虹表攻擊

2021-10-18 03:37:02 字數 983 閱讀 8661

在我們日常系統中,很多都有使用者註冊功能,使用者註冊需要使用者名稱和密碼,密碼一般我們都採用md5加密的方式,但是用md5加密,對於乙個固定的字串,其md5值是固定的,這樣就會出現彩虹表攻擊情況。所謂彩虹表攻擊就是指攻擊者有一張表,裡面有密碼明文和對應md5值的對應關係,攻擊者利用這些關係來破解使用者密碼。

一般的,md5加密其實也沒啥,因為我覺得畢竟彩虹表攻擊者少數,只要你的系統還不夠大,沒人會關注攻擊你。樹大就容易招風了。

應對這個問題,可以使用bcryptpasswordencoder加密方式代替md5加密,bcryptpasswordencoder每次encode的值都是不一樣的,也就是同乙個明文,每次加密之後都是不一樣的。每次不一樣的話,怎麼做密碼校驗呢。bcryptpasswordencoder提供了match方法,可以對明文和加密後的字串進行match匹配,匹配上了就返回true,否則返回false。同乙個明文,儘管它可以有多個加密串,但是它跟它的加密串一定是match的。

使用bcryptpasswordencoder也很簡單,對於springboot專案,我們只需要建乙個自己的類繼承一下bcryptpasswordencoder即可,什麼方法都不需要重寫。只需要將自己的類注入到spring,或者直接將bcryptpasswordencoder作為bean注入到spring的配置檔案中。非spring專案可以直接new bcryptpasswordencoder()來建立。

示例**:

@component

public class passwordencoder extends bcryptpasswordencoder

@service

public class umsmemberserviceimpl implements umsmemberservice else

}@override

public string login(usermemberdto usermemberdto) else

}}

字典攻擊 彩虹表攻擊與防禦

其實彩虹表攻擊只是批處理字典攻擊的一種具體實現,它的主要特點是 以時間換空間 意思是查表時間變長了,但所需儲存空間減少了。公開鹽值使得破解大量密碼時更加耗時。使用公開鹽的情況下,在輸入密碼時,隨機選擇n位鹽s,通過測試h pw,sa ha驗證a的pw。攻擊者必須為每個使用者重新遍歷雜湊字典。批處理字...

有一種感情叫無緣,有一種放棄叫成全

許多的事情,總是在經歷過後才懂得。一如感情,痛過了,才懂得如何保護自己 傻過了,才懂得如何適時的堅持與放棄,在得到與失去中我們慢慢的認識自己。其實,生活並不需要這麼些無謂的執著,們有什麼就真的不能割捨。學會放棄,生活就真的容易。學會放棄,在落淚之前轉身離去,留下簡單的身影 學會放棄,將昨天埋在心底,...

有一種感情叫無緣,有一種放手叫成全

有一種感情叫無緣,有一種放手叫成全,經過40多個小時的奮鬥,終於姍姍來遲的把仙劍奇俠傳四給通關了,有感動,有欣慰,也有悲傷,感動的是,最後雲天河為了解救山下的人們,以凡人之軀驅使后羿射日弓,射落了懸在空中的崑崙瓊華派,但是,以雲天河的凡人之軀驅使神器,遭力量反噬,失明了,為雲天河的這份博愛 這份慈悲...