一些常見的數(shù)據(jù)加密策略

霞客技術(shù)協(xié)會(huì)
需要對(duì)加密和解密使用相同密鑰的加密算法。由于其速度快,對(duì)稱性加密通常在消息發(fā)送方需要加密大量數(shù)據(jù)時(shí)使用。對(duì)稱性加密也稱為密鑰加密。

為什么我們需要加密

系統(tǒng)開發(fā)中,對(duì)數(shù)據(jù)的加密是不可缺少的,例如登錄時(shí)對(duì)用戶的密碼加密策略,雖然目前https協(xié)議得到了很大的推廣,但還是有少部分使用http協(xié)議的網(wǎng)站,如果再次使用明文傳輸數(shù)據(jù),那就非常危險(xiǎn)了。

比如登錄策略,發(fā)起登錄時(shí)一般是訪問(wèn)登錄接口,將賬號(hào),密碼傳輸過(guò)去。比如這樣

2345截圖20211028093243.png

使用瀏覽器自帶的抓包工具,可以看見,此時(shí)的密碼就是明文的,沒(méi)有經(jīng)過(guò)加密。如果這個(gè)網(wǎng)站是http協(xié)議那就很危險(xiǎn)了。

所以一般會(huì)選擇在登錄時(shí)前端對(duì)數(shù)據(jù)進(jìn)行加密,傳輸?shù)胶蠖撕?,由后端解密,后端再去進(jìn)行后續(xù)處理。比如這個(gè)網(wǎng)站,輸入賬號(hào)密碼登錄后,使用瀏覽器自帶的抓包工具就可以查看到,密碼經(jīng)過(guò)了加密處理。

2345截圖20211028093243.png

盡管前端將數(shù)據(jù)傳輸給后端時(shí)經(jīng)過(guò)了加密,在數(shù)據(jù)庫(kù)中的密碼依然需要加密。防止數(shù)據(jù)庫(kù)被竊取,泄露用戶隱私,造成財(cái)產(chǎn)安全的損失。

加密前

2345截圖20211028093243.png

加密后

2345截圖20211028093243.png

這樣一來(lái),哪怕不小心發(fā)生數(shù)據(jù)庫(kù)信息泄露,也不容易將用戶密碼直接暴露出去。

常見加密策略

1.散列算法

散列是信息的提煉,通常其長(zhǎng)度要比信息小得多,且為一個(gè)固定長(zhǎng)度。加密性強(qiáng)的散列一定是不可逆的,這就意味著通過(guò)散列結(jié)果,無(wú)法推出任何部分的原始信息。

比如MD5算法。該加密算法很常用,但是隨著大數(shù)據(jù)時(shí)代,該算法也能被破解。

另一個(gè)算法BCrypt算法,是一種加鹽的加密算法,MD5算法一段密碼每次經(jīng)過(guò)hash后生成的值是一樣的,但是BCrypt加密算法可以使得一段密碼加密后,內(nèi)容不唯一,可調(diào)用相關(guān)函數(shù)進(jìn)行與數(shù)據(jù)庫(kù)存放的密文進(jìn)行匹配。

2345截圖20211028093243.png

2.對(duì)稱加密

需要對(duì)加密和解密使用相同密鑰的加密算法。由于其速度快,對(duì)稱性加密通常在消息發(fā)送方需要加密大量數(shù)據(jù)時(shí)使用。對(duì)稱性加密也稱為密鑰加密。

因此加密的安全性不僅取決于加密算法本身,密鑰管理的安全性更是重要。因?yàn)榧用芎徒饷芏际褂猛粋€(gè)密鑰,如何把密鑰安全地傳遞到解密者手上就成了必須要解決的問(wèn)題。

DES算法屬于對(duì)稱加密算法,明文按64位進(jìn)行分組,密鑰長(zhǎng)為64位,但事實(shí)上只有56位參與了DES運(yùn)算(第8/16/24/32/40/48/56/64位是校驗(yàn)位,使得每個(gè)密匙都有奇數(shù)個(gè)1),分組后的明文和56位的秘鑰按位替換或交換的方法形成密文。由于計(jì)算機(jī)運(yùn)算能力的增強(qiáng),原版DES密碼的秘鑰長(zhǎng)度變得容易被暴力破解,因此演變出了3DES算法,3DES是DES向AES過(guò)渡的加密算法,它使用3條56位的密鑰對(duì)數(shù)據(jù)進(jìn)行三次加密,是DES的一個(gè)更安全的變形。

AES全稱是Advanced Encryption Standard,即高級(jí)加密標(biāo)準(zhǔn),該算法是美國(guó)聯(lián)邦政府采用的一種對(duì)稱加密標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)用來(lái)代替原先的DES算法,已經(jīng)廣為全世界所使用,已然成為對(duì)稱加密算法中最流行的算法之一。AES算法作為新一代的數(shù)據(jù)加密標(biāo)準(zhǔn)匯聚了強(qiáng)安全性、高性能、高效率、易用和靈活等優(yōu)點(diǎn),設(shè)計(jì)有三個(gè)密鑰長(zhǎng)度:128,192,256位,比DES算法的加密強(qiáng)度更高,更為安全。

2345截圖20211028093243.png

3.非對(duì)稱加密

對(duì)稱加密算法在加密和解密時(shí)使用的是同一個(gè)秘鑰;而非對(duì)稱加密算法需要兩個(gè)密鑰來(lái)進(jìn)行加密和解密,這兩個(gè)密鑰是公鑰和私鑰。

通常由前端第一次訪問(wèn)后端獲取到公鑰,再通過(guò)公鑰對(duì)信息加密后再向后端傳輸數(shù)據(jù),后端獲取到數(shù)據(jù)后,再通過(guò)私鑰進(jìn)行解密,從而實(shí)現(xiàn)密碼加密傳輸。

2345截圖20211028093243.png

常用RSA算法

RSA非對(duì)稱加密算法是1997年由Ron Rivest、AdiShamirh和LenAdleman開發(fā)的,RSA取名來(lái)自開發(fā)他們?nèi)叩拿帧SA是目前最有影響力的非對(duì)稱加密算法,它能抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn)。RSA算法基于一個(gè)十分簡(jiǎn)單的數(shù)論事實(shí):將兩個(gè)大素?cái)?shù)相乘十分容易,但反過(guò)來(lái)想要對(duì)其乘積進(jìn)行因式分解卻十分困難,因此可以將乘積公開作為加密秘鑰。

4.數(shù)字簽名

數(shù)字簽名(又稱公鑰數(shù)字簽名)是只有信息的發(fā)送者才能產(chǎn)生的別人無(wú)法偽造的一段數(shù)字串,這段數(shù)字串同時(shí)也是對(duì)信息的發(fā)送者發(fā)送信息真實(shí)性的一個(gè)有效證明。它是一種類似寫在紙上的普通的物理簽名,但是在使用了公鑰加密領(lǐng)域的技術(shù)來(lái)實(shí)現(xiàn)的,用于鑒別數(shù)字信息的方法。一套數(shù)字簽名通常定義兩種互補(bǔ)的運(yùn)算,一個(gè)用于簽名,另一個(gè)用于驗(yàn)證。數(shù)字簽名是非對(duì)稱密鑰加密技術(shù)與數(shù)字摘要技術(shù)的應(yīng)用。

以上加密算法只是簡(jiǎn)單的介紹,具體使用方式可以去查詢相關(guān)技術(shù)文檔以使用。

參考文章

JAVA開發(fā)必須掌握的5中加密策略

https://blog.csdn.net/huang_yx/article/details/79752565

加密策略

https://blog.csdn.net/aipiannian6725/article/details/101157803

BCrypt加密的原理,以及常見的加密算法

https://blog.csdn.net/qq_41174684/article/details/90214341

對(duì)稱加密

https://blog.csdn.net/qq_44836294/article/details/108488941

對(duì)稱加密、非對(duì)稱加密、公鑰、私鑰究竟是個(gè)啥?

https://blog.csdn.net/albertsh/article/details/106536857

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無(wú)評(píng)論