日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務,提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

TOKEN作為用戶身份憑證并不能保證數(shù)據(jù)安全,別人通過抓包等方式很容易拿到TOKEN,帶上TOKEN請求我們的API接口就能獲取數(shù)據(jù);其實換一個角度想:我們只需保證即使TOKEN被別人冒用,也不能調(diào)用我們API接口就行。

分享一個前后端使用AES和RSA混合加密通信的方案。

AES對稱加密

首先看一下AES加密的示意圖:

加密過程為:發(fā)送方(App)使用密鑰對參數(shù)明文進行AES加密獲得密文,然后將密文和密鑰一起發(fā)給接收方(服務端),接收方使用密鑰對密文進行AES解密,得到參數(shù)明文。

AES由于是對稱加密算法,特點就是加解密運算速度快;由于加解密使用的是同一個密鑰,所以缺點就是在傳輸過程中會存在密鑰泄露的風險。

RSA非對稱加密

同樣的,先來看一下RSA加密的示意圖:

首先接收方(服務端)生成一對RSA密鑰(公鑰、私鑰),私鑰自己保存同時公鑰公布給發(fā)送方(APP)。

加密過程:發(fā)送方使用接收方公鑰將參數(shù)明文進行RSA加密得到密文,并將密文發(fā)送給接收方,接收方使用自己的私鑰對密文進行RSA解密得到參數(shù)明文。

同樣的,服務端返回數(shù)據(jù)給APP時也可以使用私鑰對數(shù)據(jù)進行簽名,APP可以使用服務端的公鑰來驗證簽名,從而判斷數(shù)據(jù)是否來自合法的服務端。

RSA是非對稱加密算法,加解密大量數(shù)據(jù)速度較慢,但由于加解密使用不同的密鑰,所以安全度較高。

介于這兩種加密方式各有優(yōu)缺點,所以前后端加密通信方案通常采用AES對稱加密算法對參數(shù)進行加密,RSA非對稱加密算法則只用來對AES密鑰進行加密,兩種加密方式混合使用既不會太影響通信速度,又保證了通信安全。

為了防止重放攻擊,我們還需要在AES+RSA混合加密的基礎上再加入時間戳、隨機字符串以及數(shù)字簽名等校驗邏輯。

為了防止中間人攻擊,首先HTTPS是必須的,除此之外前后端還需要互相進行身份認證,確保通信沒有被劫持。

前后端加密通信完整流程

準備工作:服務端生成RSA密鑰對(公鑰、私鑰),公鑰下發(fā)給APP,自己持有私鑰;APP也需要生成RSA密鑰對(公鑰、私鑰),公鑰上傳到服務端保存、私鑰自己保留。

首先展示一下我用代碼實現(xiàn)的前后端完整的加解密通信流程:

首先講一下APP調(diào)用接口時的加密流程:

  1. 隨機生成一個AES加密算法的密鑰,用于后續(xù)加密;
  2. 使用服務端的RSA公鑰對步驟1中生成的AES密鑰明文進行RSA加密生成密鑰密文;
  3. 使用AES密鑰明文對參數(shù)明文進行AES加密生成參數(shù)密文;
  4. 生成當前時間的時間戳;
  5. 生成一串隨機字符串;
  6. 將參數(shù)密文、AES密鑰密文、時間戳、隨機字符串進行MD5計算,得到md5值;
  7. 使用APP自己的RSA私鑰對md5值簽名,得到簽名值;
  8. 最后將參數(shù)密文、AES密鑰密文、時間戳、隨機字符串、簽名值一起發(fā)送到服務端;

 

再來講一下服務端收到請求后的解密流程:

  1. 對比請求參數(shù)中時間戳與服務器端獲取的當前時間戳,判斷兩者差值是否在一定的時間之內(nèi),超過則認為請求過期;
  2. 從系統(tǒng)緩存中查找參數(shù)中隨機字符串是否已存在,如果已存在則認為是一次重復請求,不存在則將該隨機字符串放入緩存;
  3. 將參數(shù)密文、AES密鑰密文、時間戳、隨機字符串進行MD5計算,得到md5值
  4. 使用客戶端上傳的RSA公鑰驗證參數(shù)中的簽名是否來自合法授權(quán)的客戶端,防止非法客戶端篡改數(shù)據(jù);
  5. 使用自己的RSA私鑰解密AES密鑰密文,得到AES明文密鑰;
  6. 使用AES明文密鑰解密參數(shù)密文得到參數(shù)明文;
  7. 進行正常的業(yè)務處理流程;
  8. 返回數(shù)據(jù)加密流程與客戶端加密流程一致;

總結(jié)

要保證APP與API通信安全,首先要使用HTTPS協(xié)議,同時前后端還需要使用AES+RSA混合加密的方式來對數(shù)據(jù)進行加密,另外為了防止重放攻擊、中間人攻擊,還需要在數(shù)據(jù)加密的基礎上加入時間戳、隨機字符串以及數(shù)字簽名等校驗手段進一步提高通信的安全性。

分享到:
標簽:APP API
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定