1. 程式人生 > >API介面加密方式說明

API介面加密方式說明

文件說明
本文件適用於api介面開發人員、移動端開發人員,針對移動端請求API介面時加密方式以及加密規則進行說明。
加密方式
不採取非對稱加密說明
好處:
相對於對稱加密,非對稱加密安全性遠遠高宇對稱加密,能夠保證在資料傳輸中資料被劫持之後不被破解。
缺點:
由於非對稱加密 [ openssl rsa ],金鑰為1024bit時候最多值能加密117個字元,而且加解密相對於對稱加密速度會慢,目前介面和app互動資料較多時候,只能採取分段加密之後拼裝,解密時候也需要分段解密,不適用當前使用場景。

非對稱加密方式說明
加密演算法說明

加密演算法:AES
加密模式:CBC
填充方式:PKCS7
加密金鑰:

BeijingIyijigo.com
初始化向量[ IV ]:00000000000000000000000000000000
具體實現可以參考連結 : http://www.funboxpower.com/php_android_ios_aes#codesyntax_2
介面加密說明
、移動端請求介面時,將資料通過POST提交到介面,
、將介面需要的引數拼成陣列
、將陣列json_encode之後
、加密之後拼裝為data資料傳遞給介面。
其他引數說明
(1)、移動端請求介面的時候需要將終端型別(tt)傳遞給介面,建議和data資料平級。
(2)、移動端請求介面的時候需要將終端版本號(vc)傳遞給介面,建議和data資料平級。
例如獲取使用者資訊介面:
http://xxx.com/user/getUserInfo?data=encrypt(json(array)
)&tt=1&vc=1;

SIGN值加密以及校驗說明
將請求介面需要的引數排序後的json串MD5傳遞給介面。

校驗值生成步驟:
① 將介面需要的引數組裝成陣列 【IOS為字典,android為hashmap 】
② 將介面引數排序之後,將Key_value拼接為一個字串
arr = array( ‘a’=> 1, ‘b’=>2);
拼裝之後為a1b2
③ 將拼接的串MD5
④ 將加密之後的MD5值作為請求介面的引數傳遞 ( 和data,tt,vc 平級 )
備註:
用於對請求引數進行校驗,介面在接收到引數時,需要對引數進行排序,json之後進行MD5校驗,介面引數不強制要求按照文件順序,校驗值必須排序之後再進行MD5加密,防止在傳輸過程中被截斷篡改,介面不強制對引數順序進行校驗。