天天看點

**17.app後端如何保證通訊安全--aes對稱加密 1.對稱加密的原理 3.對稱加密方法的總結

在上文《16.app後端如何保證通訊安全--url簽名》提到,url簽名有兩個缺點,這兩個缺點,如果使用對稱加密方法的話,則完全可以避免這兩個缺點。在本文中,會介紹對稱加密的具體原理,和詳細的方案,使app通訊更加安全。

  采用單鑰密碼系統的加密方法,同一個密鑰可以同時用作資訊的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。

  其實很簡單,假設有原始資料"1000", 把1000加5就得到密文"1005",得到密文"1005"後減5就得到原始資料"1000"。把原始資料加5就是加密算法,把密文減5就是解密算法,密鑰就是5。

  本文所用的是AES這種通用的對稱加密算法。

  (1)curl簡介

  在下面的例子中,會使用curl工具,先簡單介紹一下。

  curl是利用URL文法在指令行方式下工作的開源檔案傳輸工具。

  用到的參數:

  -X: 指定什麼指令,例如post,get等。

  -H: 指定http header。

  -d: 制定http body的内容

  (2)怎麼保證token在初次傳回時的安全

  用下面的api傳回加密的token

  curl -X POST \

  -H "Token-Param:<時間戳>,<sdkversion>"\

  -d  ‘Base64Encode(AES(token, secretKey))’

  http://test.com/api/login

  secretKey就是密鑰,使用http header中的Token-Param中的16位長度。

  服務端傳回時加密token的方法是用AES加密,密鑰是secretKey。

  用戶端解密token的方法是用AES解密,密鑰是secretKey。

  (3) api請求中的加密

  假設更新使用者資料的api調用如下

  -H  ‘Token:Base64Encode(AES(token, secretKey))’

  -d  ‘Base64Encode(AES(date, token))’

  http://test.com/api/user/update

  secretKey使用http header中的Token-Param中的16位長度。

  在上面的例子中,data是實際要post的資料。

  在這個過程中,token和post的資料都得到了加密保護。

  用戶端發送時加密的過程

  (1)取http header中的Token-Param中的16位長度作為密鑰,用AES加密token。

  (2)用token作為密鑰,用AES加密data。

  服務端接收到這個api請求的解密過程:

  (1)取http header中的Token-Param中的16位長度作為密鑰,用AES解密, 得到token。

  (2)用token作為密鑰,用AES解密http body的内容,得到原文。

  把token傳回的時候,可以做個約定,在傳回的時候截取某個字元串的一部分作為密鑰,這個秘鑰隻用一次,就是用來解密token的,以後就隻是用token來做秘鑰了。

http://blog.csdn.net/newjueqi/article/details/44177063

如何聯系我:【萬裡虎】www.bravetiger.cn

【QQ】3396726884 (咨詢問題100元起,幫助解決問題500元起)

【部落格】http://www.cnblogs.com/kenshinobiy/

繼續閱讀