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

  • 相关阅读:
    URL解析模式(伪静态)
    PHP各环境下的伪静态配置
    亚马逊-购书(电子)
    前端路由-JS实现
    SpringBoot 2.3.0.RELEASE版本后自定义404页面,SpringBoot 404错误兼容Ajax请求
    不设置DIV宽度水平居中,div不设置宽度居中
    js 保留两位小数,Js四舍五入,JavaScript Math四舍五入
    Laravel 自定义公共函数的引入
    EF Core3.1 CodeFirst动态自动添加表和字段的描述信息
    Android 高德地图API INVALID_USER_SCODE 错误
  • 原文地址:https://www.cnblogs.com/hycms/p/9333064.html
Copyright © 2011-2022 走看看