zoukankan      html  css  js  c++  java
  • 【转】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

  • 相关阅读:
    stenciljs 学习四 组件装饰器
    stenciljs 学习三 组件生命周期
    stenciljs 学习二 pwa 简单应用开发
    stenciljs ionic 团队开发的方便web 组件框架
    stenciljs 学习一 web 组件开发
    使用npm init快速创建web 应用
    adnanh webhook 框架 hook rule
    adnanh webhook 框架 hook 定义
    adnanh webhook 框架request values 说明
    adnanh webhook 框架execute-command 以及参数传递处理
  • 原文地址:https://www.cnblogs.com/hycms/p/9333064.html
Copyright © 2011-2022 走看看