參數(shù)簽名(appKey、appSecret、sign)

為什么要參數(shù)簽名

  • 保證接口的數(shù)據(jù)不會被篡改和重復調(diào)用

原理

  • 調(diào)用端對參數(shù)進行加密,服務端也對參數(shù)后加密后與調(diào)用端加密結果對比
  • 加密算法:兩端約定好加密算法,加密算法需加鹽,通過參數(shù)排序、拼接秘鑰、MD5等方式進行加密
  • 秘鑰對:服務端對每個調(diào)用端生成appKey和appSecret,appSecret為隱秘信息,調(diào)用端本地存儲。

調(diào)用端

  • 預先獲取:appKey、appSecret
  • 調(diào)用:
    傳參appKey、timestamp(毫秒時間戳,5秒過期, 防止dos攻擊)、業(yè)務參數(shù)、簽名
    簽名算法
    1. 對參數(shù)按照ASCII碼表進行排序,得到結果:num: 10, nickName: 小泡芙, username:張三
    2. 拼接排序后的字段進行拼接,得到結果:s1 = num10nickName小泡芙username張三
    3. 在拼接好的字符串后加上appSecret,得到結果:s2 = secret + s1 + secret
    4. 最后使用md5算法:md5(s2)
    請求參數(shù)示例, 注意:沒有傳appSecret
{
            "nickName": "小泡芙",
            "username": "張三",
            "num": 10,
            "appKey": "App-3782917398173123-32223",
            "timestamp": "2022-10-14 15:53:23",
            "sign": "ajhkd123dh8902381273823"
        }
  • 流程圖


    image.png

接收端

  • 接收參數(shù):
  • 驗簽:
    1. 校驗時間戳(防止抓取數(shù)據(jù)后惡意高頻訪問),判斷時間戳是否過期
    2. 校驗appSecret:獲取appSecret,判斷是否過期
    3. 校驗簽名:走簽名算法生成簽名(需要把簽名先從參數(shù)表移出來),與接收簽名對比。
  • 流程圖:


    image.png
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容