版權聲明:本文爲博主原創文章,未經博主容許不得轉載。 http://blog.csdn.net/lmy_1/article/details/52791058php
本文檔適用於api接口開發人員、移動端開發人員,針對移動端請求API接口時加密方式以及加密規則進行說明。android
好處:ios
相對於對稱加密,非對稱加密安全性遠遠高宇對稱加密,可以保證在數據傳輸中數據被劫持以後不被破解。算法
缺點:json
因爲非對稱加密 [ openssl rsa ],密鑰爲1024bit時候最多值能加密117個字符,並且加解密相對於對稱加密速度會慢,目前接口和app交互數據較多時候,只能採起分段加密以後拼裝,解密時候也須要分段解密,不適用當前使用場景。api
加密算法:AES數組
加密模式:CBC安全
填充方式:PKCS7app
加密密鑰:BeijingIyijigo.com
初始化向量[ IV ]:00000000000000000000000000000000
具體實現能夠參考連接 : http://www.funboxpower.com/php_android_ios_aes#codesyntax_2
(1)、移動端請求接口時,將數據經過POST提交到接口,
(2)、將接口須要的參數拼成數組
(3)、將數組json_encode以後
(4)、加密以後拼裝爲data數據傳遞給接口。
(1)、移動端請求接口的時候須要將終端類型(tt)傳遞給接口,建議和data數據平級。
(2)、移動端請求接口的時候須要將終端版本號(vc)傳遞給接口,建議和data數據平級。
例如獲取用戶信息接口:
http://xxx.com/user/getUserInfo?data=encrypt(json(array))&tt=1&vc=1;
將請求接口須要的參數排序後的json串MD5傳遞給接口。
校驗值生成步驟:
① 將接口須要的參數組裝成數組 【IOS爲字典,android爲hashmap 】
② 將接口參數排序以後,將Key_value拼接爲一個字符串
arr = array( ‘a’=> 1, ‘b’=>2);
拼裝以後爲a1b2
③ 將拼接的串MD5
④ 將加密以後的MD5值做爲請求接口的參數傳遞 ( 和data,tt,vc 平級 )
備註:
用於對請求參數進行校驗,接口在接收到參數時,須要對參數進行排序,json以後進行MD5校驗,接口參數不強制要求按照文檔順序,校驗值必須排序以後再進行MD5加密,防止在傳輸過程當中被截斷篡改,接口不強制對參數順序進行校驗。