【轉】js 對象按照索引值(不分區大小寫)排序,產生簽名方法

來源:互聯網
上載者:User

標籤:fun   function   簽名   creat   type   padleft   關聯   要求方法   ret   

客戶需求小程式端用js產生簽名,我們按照要求一步一步解決,並且將要求方法封裝到一個utils.js裡:

第一步:對關聯陣列按照鍵名做正序排序。

第二步:拼接字串 

第三步:將拼接的字串加上私密金鑰

第四步:將以上字串MD5加密

 

const md5 = require(‘md5.js‘);var appsecret ="appsecret ";var App_Key ="App_Key ";//字母排序:不區分大小寫function sortCharter(a, b) {if (a.toString().toUpperCase() > b.toString().toUpperCase()) {return 1;}else if (a.toString().toUpperCase() == b.toString().toUpperCase()) {return 0;}else {return -1;}} function objKeySort(obj) {//排序的函數var newkey = Object.keys(obj).sort(sortCharter);//先用Object內建類的keys方法擷取要排序對象的屬性名稱,再利用Array原型上的sort方法對擷取的屬性名稱進行排序,newkey是一個數組var newObj = {};//建立一個新的對象,用於存放排好序的索引值對for (var i = 0; i < newkey.length; i++) {//遍曆newkey數組newObj[newkey[i]] = obj[newkey[i]];//向新建立的對象中按照排好的順序依次增加索引值對}return newObj;//返回排好序的新對象}String.prototype.PadLeft = function (len, charStr) {var s = this + ‘‘;return new Array(len - s.length + 1).join(charStr, ‘‘) + s;} //建立signfunction create_sign(data) { console.log("1、排序前create_sign0");console.log(data);//1、排序data = objKeySort(data);console.log("1、排序後create_sign111");console.log(data);//2.拼接var txt="";var newkey = Object.keys(data);for (var i = 0; i < newkey.length; i++) {//遍曆newkey數組txt = txt + newkey[i].length.toString().PadLeft(2, ‘0‘);txt=txt+"-";txt = txt + newkey[i];txt = txt + ":";//  console.log("for內部===k-v");console.log(newkey[i]);console.log(data[newkey[i]]);txt = txt + data[newkey[i]].toString().length.toString().PadLeft(4,‘0‘);txt = txt + "-";txt = txt + data[newkey[i]];if (i < (newkey.length-1)){txt = txt + ";";}}//console.log("for內部===3.追加私密金鑰appsecret");//3.追加私密金鑰appsecret// console.log(txt);// console.log("appsecret=" + appsecret);txt = txt + appsecret;//4.md5加密txt = md5.hex_md5(txt);return txt;}

 

【轉】js 對象按照索引值(不分區大小寫)排序,產生簽名方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.