1. 程式人生 > >App實現可靠性資料傳輸

App實現可靠性資料傳輸

App和server需要大量的資料互動,為了防止競爭對手通過抓包方式獲得自己的資料,可以採用對稱加密技術和非對稱加密技術結合的方式對自己的資料進行可靠性傳輸。本文采用AES ECB 128位方式舉例,具體的大家可以自行選擇。一、上行(App傳送資料給Server)假如我們需要將使用者的手機號,密碼發給Server端。資料telephone=185000000000,pwd=1234561.先將資料序列化(json化){"telephone" : "185000000000","pwd" : "123456","deviceid" : "238479384723498","time" : "1446517059"}注:時間戳和裝置id(每個裝置唯一)都是為了防止請求重現加入的,可以在請求的基類里加入2.資料加密及簽名生成將第一步的json進行AES加密並進行base64,本文在海奼網線上AES
得到金鑰為12345678,刪掉所有換行和非資料的空格如({"telephone":"185000000000","pwd":"123456","deviceid":"238479384723498","time":"1446517059"})Y7bSUw3mjUxaOU126RaQJqNv1UPKeLf0l1lMVQJ359IgbQuHTqTUAUrhtqApiH7zZu3KJahbTcyYDLFyzGsFSC6XC7CqeuZNKIi0T+U7tR3Mqw5ndJHT/X9O+aBT7sAoqgEbt9+kC2EN9dhceYXgXM6H+brLYZwbBqw/NrEQjfLTzOc1GX9kOUCXbaupWSz1JDdRTQ272i2X7GqC0jJWLD/xRUveqfOdD1sMmdhgsJc=對json資料做md5得到6c220955e6a567a0b944cac843ca8e8e3.組合傳輸資料將加密的資料和簽名json化 {"sign" : "6c220955e6a567a0b944cac843ca8e8e","data":"Y7bSUw3mjUxaOU126RaQJqNv1UPKeLf0l1lMVQJ359IgbQuHTqTUAUrhtqApiH7zZu3KJahbTcyYDLFyzGsFSC6XC7CqeuZNKIi0T+U7tR3Mqw5ndJHT/X9O+aBT7sAoqgEbt9+kC2EN9dhceYXgXM6H+brLYZwbBqw/NrEQjfLTzOc1GX9kOUCXbaupWSz1JDdRTQ272i2X7GqC0jJWLD/xRUveqfOdD1sMmdhgsJc=" } 4.Server端處理 收到App的請求資料後,Server先將data欄位AES解密,得到有效資料的JSON,再進行相同規則的簽名計算,需要主要json資料的順序,必須保持一致,再和App發過來的sign進行比對,如果一致則判讀為有效請求,將當前的sign存到redis裡,設定一個月內不得再出現,防止請求重現。 二、下行(Server傳送資料給App)
可以仿造上行的2,3兩步,但是不需要deviceid. 更多內容請關注我的部落格