zoukankan      html  css  js  c++  java
  • js模拟签名

    在openapi中需要对参数进行签名,这里做了一个用js来模拟的例子,在实际应用中不能用js来做,因为会暴露secretkey,这里仅用于内部测试之用,另外散列使用md5-min.js来做。

    sig.js

    /// <reference path="http://www.cnblogs.com/Scripts/jquery-1.6.2-vsdoc.js" />
    //
    / <reference path="http://www.cnblogs.com/Scripts/json2.js" />

    /*------------------------------------*\
    sig
    \*------------------------------------
    */

    var SIG = {

    run:
    function (dict, secret_key) {
    dict
    = SIG._sort(dict);
    SIG._sigData(dict, secret_key);
    return dict;
    },

    _sort:
    function (dict) {
    //提取key为数组
    var _keys = [];
    $.each(dict,
    function (k, v) {
    _keys.push(k);
    });
    //对key数据排序
    _keys.sort(function (a, b) {
    return a > b;
    });
    //创建新字典
    var _newdict = {};
    $.each(_keys,
    function (i, v) {
    _newdict[v]
    = dict[v];
    });
    return _newdict;
    },

    _sigData:
    function (dict, secret_key) {

    //1、key排序
    //2、生成sig
    //3、组合sig到json
    var sigtext = SIG._getSigText(dict, secret_key);
    dict[
    'sig'] = sigtext;
    },

    _getSigText:
    function (dict, secretkey) {
    var html = [];
    $.each(dict,
    function (k, v) {
    html.push(k,
    '=', v);
    });
    html.push(secretkey);
    var plaintext = (html.join(''));
    var sigtext = hex_md5(plaintext);

    return sigtext
    }


    }

    post test

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>StoreToken</title>
    <!--<script src="http://www.cnblogs.com/Scripts/jquery-1.6.2-vsdoc.js" type="text/javascript"></script>-->
    <script src="http://www.cnblogs.com/Scripts/jquery-1.6.2.js" type="text/javascript"></script>
    <script src="http://www.cnblogs.com/Scripts/json2.js" type="text/javascript"></script>
    <script src="http://www.cnblogs.com/Scripts/md5-min.js" type="text/javascript"></script>
    <script src="sig.js" type="text/javascript"></script>
    <script type="text/javascript">

    $(
    function () {

    var postdata = SIG.run(
    {
    "api_key": "11111111111111111111111111111111",
    "call_id": new Date().getTime(),
    "method": "push.storeToken",
    "v": "1",
    "token": "123"
    },
    '88888888888888888888888888888888');

    $(
    "<p />").html(JSON.stringify(postdata)).appendTo($('#msgbox'));

    $.post(
    "/service", postdata, function (data, textStatus) {
    if (textStatus == "success") {
    $(
    "<p />").html(JSON.stringify(data)).appendTo($('#msgbox'));
    if (data != null) {
    }
    else {
    alert(
    "调用不成功");
    }
    }
    else {
    alert(
    "textStatus: " + textStatus);
    }
    });
    });
    </script>
    </head>
    <body>
    <div id="msgbox">
    </div>
    </body>
    </html>

      

  • 相关阅读:
    关于SpringBoot的外部化配置使用记录
    深入理解Mybatis插件
    MySQL JDBC Driver 8.0+设置服务器时区
    重新认识Java注解
    深入理解Java枚举
    Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇
    Spring Cloud系列教程第九篇-Eureka自我保护机制
    安装vsftp服务器的时候遇到的问题
    spring cloud系列教程第八篇-修改服务名称及获取注册中心注册者的信息
    idea 启动命令行的时候提示不能创建PTY
  • 原文地址:https://www.cnblogs.com/chenjunbiao/p/2129684.html
Copyright © 2011-2022 走看看