程序開發(fā)過程中一般會遇到客戶端與服務(wù)端進(jìn)行數(shù)據(jù)通信,不可避免的會遇到數(shù)據(jù)安全問題。為了防止數(shù)據(jù)在網(wǎng)絡(luò)傳輸中發(fā)生數(shù)據(jù)泄露,我們常常會用到數(shù)據(jù)加密。常規(guī)的數(shù)據(jù)加密方式主要有:對稱加密和非對稱加密。
對稱加密
- 加密和解密使用同一個秘鑰
- 加密速度較快
- 缺點(diǎn)是秘鑰需要在網(wǎng)絡(luò)過程中傳輸,可能發(fā)生泄漏
對稱加密主要有3種加密方式:DES加密、3DES加密及AES加密
1.DES加密
如上圖所述,對稱加密使用同一個秘鑰,先用秘鑰對需要傳輸?shù)拿魑臄?shù)據(jù)進(jìn)行加密,已加密的密文數(shù)據(jù)經(jīng)過網(wǎng)絡(luò)傳輸后,數(shù)據(jù)接收方通過同一個秘鑰進(jìn)行解密,將密文數(shù)據(jù)再轉(zhuǎn)化成明文數(shù)據(jù),完成數(shù)據(jù)傳輸過程。
但DES加密算法的安全性不夠好,DES 被證明是可以破解的,明文+密鑰=密文,這個公式只要知道任何兩個,就可以推導(dǎo)出第三個在已經(jīng)知道明文和對應(yīng)密文的情況下,通過窮舉和暴力破解是可以破解DES的。
2.3DES加密
顧名思義,3DES加密就是使用DES算法加密解密3次,由于DES加密缺乏安全性,3DES加密3次后安全性大大提高,但損失了一定的速度性能,所以慢慢被更優(yōu)異的AES加密算法所取代,3DES算法可以說是DES加密和AES加密中間的過度品。
3.AES加密
AES加解密過程和DES加解密過程類似,AES標(biāo)準(zhǔn)支持可變分組長度,分組長度可設(shè)定為32 比特的任意倍數(shù),最小值為128 比特,最大值為256 比特,安全性大大增加,加解密速度也還可以。
非對稱加密
- 非對稱加密有兩個秘鑰,分別為公鑰和私鑰,一般用公鑰進(jìn)行加密,私鑰進(jìn)行解密
- 非對稱加密速度相對于對稱加密來說要慢很多
- 非對稱加密的典型代表為RSA加密方式。
RSA加密

RSA的安全基于大數(shù)分解的難度。其公鑰和私鑰是一對大素數(shù)(100到200位十進(jìn)制數(shù)或更大)的函數(shù)。從一個公鑰和密文恢復(fù)出明文的難度,等價于分解兩個大素數(shù)之積(這是公認(rèn)的數(shù)學(xué)難題)。
同時由于RSA的私鑰不用在網(wǎng)絡(luò)上傳輸,避免了秘鑰泄露,因此安全性能大大提高。
RSA加解密速度測試:
通過上表可以發(fā)現(xiàn),RSA加密速度還比較快,但解密速度會隨著加密數(shù)據(jù)的大小慢很多,加密6KB大小的數(shù)據(jù)用時0秒,解密用時1秒還可以接受。但對1M左右的數(shù)據(jù)進(jìn)行解密,花費(fèi)了5分多鐘的時間,在實際開發(fā)過程中就會顯得很慢,所以RSA算法一般用于加密數(shù)據(jù)量較小的應(yīng)用場景。