zoukankan      html  css  js  c++  java
  • Apicloud_(接口验证)用户注册头部信息X-APICloud-AppKey生成

      接口验证KEY生成规则说明  官方文档:  传送门

      "X-APICloud-AppKey"生成规则是基于SHA1()算法生成的

    AppKey= SHA1(你的应用ID + 'UZ' + 你的应用KEY +'UZ' +当前时间毫秒数).当前时间毫秒数
    /**
     * Created by andy on 14-12-25.
     */
    /**
     *
     *  Secure Hash Algorithm (SHA1)
     *  http://www.webtoolkit.info/
     *
     **/
    
    function SHA1(msg) {
    
      function rotate_left(n, s) {
        var t4 = (n << s) | (n >>> (32 - s));
        return t4;
      };
    
      function lsb_hex(val) {
        var str = "";
        var i;
        var vh;
        var vl;
    
        for (i = 0; i <= 6; i += 2) {
          vh = (val >>> (i * 4 + 4)) & 0x0f;
          vl = (val >>> (i * 4)) & 0x0f;
          str += vh.toString(16) + vl.toString(16);
        }
        return str;
      };
    
      function cvt_hex(val) {
        var str = "";
        var i;
        var v;
    
        for (i = 7; i >= 0; i--) {
          v = (val >>> (i * 4)) & 0x0f;
          str += v.toString(16);
        }
        return str;
      };
    
    
      function Utf8Encode(string) {
        string = string.replace(/
    /g, "
    ");
        var utftext = "";
    
        for (var n = 0; n < string.length; n++) {
    
          var c = string.charCodeAt(n);
    
          if (c < 128) {
            utftext += String.fromCharCode(c);
          }
          else if ((c > 127) && (c < 2048)) {
            utftext += String.fromCharCode((c >> 6) | 192);
            utftext += String.fromCharCode((c & 63) | 128);
          }
          else {
            utftext += String.fromCharCode((c >> 12) | 224);
            utftext += String.fromCharCode(((c >> 6) & 63) | 128);
            utftext += String.fromCharCode((c & 63) | 128);
          }
    
        }
    
        return utftext;
      };
    
      var blockstart;
      var i, j;
      var W = new Array(80);
      var H0 = 0x67452301;
      var H1 = 0xEFCDAB89;
      var H2 = 0x98BADCFE;
      var H3 = 0x10325476;
      var H4 = 0xC3D2E1F0;
      var A, B, C, D, E;
      var temp;
    
      msg = Utf8Encode(msg);
    
      var msg_len = msg.length;
    
      var word_array = new Array();
      for (i = 0; i < msg_len - 3; i += 4) {
        j = msg.charCodeAt(i) << 24 | msg.charCodeAt(i + 1) << 16 |
        msg.charCodeAt(i + 2) << 8 | msg.charCodeAt(i + 3);
        word_array.push(j);
      }
    
      switch (msg_len % 4) {
        case 0:
          i = 0x080000000;
          break;
        case 1:
          i = msg.charCodeAt(msg_len - 1) << 24 | 0x0800000;
          break;
    
        case 2:
          i = msg.charCodeAt(msg_len - 2) << 24 | msg.charCodeAt(msg_len - 1) << 16 | 0x08000;
          break;
    
        case 3:
          i = msg.charCodeAt(msg_len - 3) << 24 | msg.charCodeAt(msg_len - 2) << 16 | msg.charCodeAt(msg_len - 1) << 8 | 0x80;
          break;
      }
    
      word_array.push(i);
    
      while ((word_array.length % 16) != 14) word_array.push(0);
    
      word_array.push(msg_len >>> 29);
      word_array.push((msg_len << 3) & 0x0ffffffff);
    
    
      for (blockstart = 0; blockstart < word_array.length; blockstart += 16) {
    
        for (i = 0; i < 16; i++) W[i] = word_array[blockstart + i];
        for (i = 16; i <= 79; i++) W[i] = rotate_left(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
    
        A = H0;
        B = H1;
        C = H2;
        D = H3;
        E = H4;
    
        for (i = 0; i <= 19; i++) {
          temp = (rotate_left(A, 5) + ((B & C) | (~B & D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;
          E = D;
          D = C;
          C = rotate_left(B, 30);
          B = A;
          A = temp;
        }
    
        for (i = 20; i <= 39; i++) {
          temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;
          E = D;
          D = C;
          C = rotate_left(B, 30);
          B = A;
          A = temp;
        }
    
        for (i = 40; i <= 59; i++) {
          temp = (rotate_left(A, 5) + ((B & C) | (B & D) | (C & D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;
          E = D;
          D = C;
          C = rotate_left(B, 30);
          B = A;
          A = temp;
        }
    
        for (i = 60; i <= 79; i++) {
          temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;
          E = D;
          D = C;
          C = rotate_left(B, 30);
          B = A;
          A = temp;
        }
    
        H0 = (H0 + A) & 0x0ffffffff;
        H1 = (H1 + B) & 0x0ffffffff;
        H2 = (H2 + C) & 0x0ffffffff;
        H3 = (H3 + D) & 0x0ffffffff;
        H4 = (H4 + E) & 0x0ffffffff;
    
      }
    
      var temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4);
    
      return temp.toLowerCase();
    
    }
    SHA1.js
    <body>
        <div class="row">
            <input id="username" class="input" type="text" placeholder="用户名">
        </div>
        <div class="row">
            <input id="password" class="input" type="password" placeholder="密码">
        </div>
        <div class="btn" tapmode="highlight" onclick="fnRegister();">注册</div>
    </body>
    <script type="text/javascript" src="../script/api.js"></script>
    <script type="text/javascript" src="../script/APICloud-rest.js"></script>
    <script type="text/javascript" src="../script/SHA1.js"></script>
    <script type="text/javascript">
    apiready = function() {
    
    };
    
      // 注册
      function fnRegister() {
          var username = $api.byId("username");
          var password = $api.byId("password");
          var vusername = $api.val(username);
          var vpassword = $api.val(password);
          var now = Date.now();
          //5FB51794-FCDC-1FE9-19E0-xxxxxxxxxxxx换成自己appkey
          var appKey = SHA1("A6099005614565"+"UZ"+"5FB51794-FCDC-1FE9-19E0-xxxxxxxxxxxx"+"UZ"+now)+"."+now
    
          api.ajax({
              url: 'https://d.apicloud.com/mcm/api/user',
              method: 'post',
              headers: {
                  "X-APICloud-AppId": "A6099005614565",
                  //5FB51794-FCDC-1FE9-19E0-xxxxxxxxxxxx
                  "X-APICloud-AppKey":appKey,
              },
              data: {
                  values: {
                      username:vusername,
                      password:vpassword
                  }
              }},
              function (ret,err){
                if(ret&&ret.id){
                  alert("注册成功!");
                }else{
                  alert("注册失败!");
                }
              }
          );
        }
    
    </script>

     

      

    (如需转载学习,请标明出处)
  • 相关阅读:
    MSSQL复制表
    分享职场心得《7》
    分享职场心得《2》
    分享职场心得《3》
    免费收录网站搜索引擎登录入口最新版
    读写分离,读写分离死锁解决方案
    分享职场心得《5》
    分享职场心得《6》
    分享职场心得《1》
    分享职场心得《4》
  • 原文地址:https://www.cnblogs.com/1138720556Gary/p/10116486.html
Copyright © 2011-2022 走看看