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