學(xué)習(xí)本知識(shí)财边,需要了解一下預(yù)備知識(shí):
- 摘要算法
- 對(duì)稱加密
- 非對(duì)稱加密
三段式加密,顧名思義点骑,就是數(shù)據(jù)傳輸過(guò)程中酣难,加密數(shù)據(jù)由三段(數(shù)據(jù)摘要 + 對(duì)稱加密數(shù)據(jù) + 數(shù)字信封)組成。三段分別采用以上三種類型的加密算法黑滴。
對(duì)稱算法與非對(duì)稱算法的優(yōu)缺點(diǎn):
- 對(duì)稱算法效率高憨募,但由于其密鑰暴露,安全性低
- 非對(duì)稱算法只暴露公鑰袁辈,私鑰保密菜谣,所以其安全性比對(duì)稱加密高,但其效率低
三段式加密算法則采其眾所長(zhǎng),利用對(duì)稱算法對(duì)明文數(shù)據(jù)進(jìn)行加密葛菇、非對(duì)稱算法對(duì)對(duì)稱密鑰進(jìn)行加密甘磨,即保證了加密效率,也保障了密鑰的安全性眯停。
在數(shù)據(jù)傳輸前卿泽,請(qǐng)求方和服務(wù)方會(huì)約定一對(duì)公私鑰莺债,請(qǐng)求方持有公鑰(publicKey),服務(wù)方持有私鑰(privateKey)签夭;
對(duì)稱密鑰(desKey)由請(qǐng)求方隨機(jī)生成齐邦。
下面來(lái)張圖作示意說(shuō)明:
- str1 = MD5( 明文 text + desKey );
- str2 = DES( 明文 )第租;
- str3 = RSA( publicKey 措拇, desKey );
- 三段之間一般的分隔符 split 一般采用 char 29 慎宾;
- str = str1 + split + str2 + split + str3 丐吓;
服務(wù)方接受到數(shù)據(jù)之后,處理步驟如下:
- 以 分隔符(char 29) 對(duì)請(qǐng)求密文數(shù)據(jù) str 進(jìn)行分割趟据,得到 str1券犁、str2、str3汹碱;
- 用約定的非對(duì)稱私鑰(privateKey) 對(duì)str3 進(jìn)行解密粘衬,獲得 DES密鑰明文 desKey;
- 用 desKey 對(duì) str2 進(jìn)行解密咳促,獲得明文 text稚新;
- 對(duì)明文 text 與 對(duì)稱密鑰 desKey 之和 進(jìn)行 MD5加密;
- 將步驟4所得結(jié)果與 str1 進(jìn)行比較:
如果相同跪腹,則數(shù)據(jù)處理完成褂删;
如果不同,則可能數(shù)據(jù)在傳輸過(guò)程中有可能篡改尺迂,數(shù)據(jù)處理失旙悦睢;