【轉】js生成接口請求參數簽名加密


js生成接口請求參數簽名加密

簽名算法規則:

第一步,設所有發送或者接收到的數據為集合M,將集合M內非空參數值的參數按照參數名ASCII碼從小到大排序(字典序),使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
第二步,在stringA最后拼接上KEY得到stringSignTemp字符串(即stringSignTemp = stringA + &key=KEY),並對stringSignTemp進行MD5運算,再將得到的字符串所有字符轉換為大寫,得到sign值signValue
用於簽名的密鑰KEY值為keysecret
注意事項:
a、參數名ASCII碼從小到大排序(字典序);
b、如果參數的值為空(即null或空字符串)不參與簽名;
c、參數名區分大小寫;
d、驗證簽名時,傳送的sign參數不參與簽名,將生成的簽名與該sign值作校驗;

e、接口可能增加字段,驗證簽名時必須支持增加的擴展字段;

 

將所有參數字段按首字母排序, 拼接成key1 = value1 & key2 = value2的格式,再在末尾拼接上key = appSecret, 再做MD5加密生成sign,方法如下:

functiongetSign(params, kAppKey, kAppSecret) {
    if (typeof params == "string") {
        return paramsStrSort(params);
    } else if (typeof params == "object") {
        var arr = [];
        for (var i in params) {
            arr.push((i + "=" + params[i]));
        }
        return paramsStrSort(arr.join(("&")));
    }
}

functionparamsStrSort(paramsStr) {
    var url = paramsStr + "&appKey=" + kAppKey;
    var urlStr = url.split("&").sort().join("&");
    var newUrl = urlStr + '&key=' + kAppSecret;
    return md5(newUrl);
}

調用:

var params = "xid=" + xid + "&type=" + type + "&pageSize=" + pageSize + "&pageNo=" + pageNo;
var sign = getSign(params, kAppKey, kAppSecret);

或:

var paramsObj = { xid: xid, pageSize: pageSize, type: type, pageNo: pageNo };
var sign = getSign(paramsObj, kAppKey, kAppSecret);

kAppKey,kAppSecret為常量,一般由后端定義好!簽名加密方法依托MD5!

GitHub地址

也可以使用 js-md5crypto 進行md5加密

 

轉自:https://www.cnblogs.com/jone-chen/p/8143285.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM