js实现排序签名
工作中应三方爸爸要求需要签名加密
记录常用的签名方式
流程:
1. 第一步
设签名加密的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
2. 第二步
在stringA最后拼接上secretKey得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值。
具体实现
import md5 from 'md5'; genSignParams(secretKey, inObject) { var sorter = function (inObject) { var sortedJson = {}; var sortedKeys = Object.keys(inObject).sort(); for (var i = 0; i < sortedKeys.length; i++) { sortedJson[sortedKeys[i]] = inObject[sortedKeys[i]] } return sortedJson; } var sortedParam = sorter(inObject); var needSignatureStr = ""; for (var key in sortedParam) { var value = sortedParam[key]; needSignatureStr = needSignatureStr + key + '=' + value + '&'; } needSignatureStr += 'secretKey=' + secretKey; return md5(needSignatureStr).toUpperCase(); }