JavaScript實現按字典排序進行md5加密, 以及個人在小程序也可以實現


//  utils.js 文件

  const md5 = require('../md5.js')

  function creatheaderkey(obj){

    let did = Math.ceil(Math.reandom()*10)  // 隨機數

    let time1 = new Date().getTime()  //時間毫秒數

    let time = (time1+' ').slice(0,-3)  //截取前十位

    let appType = 'wechatApp'

    let init =  {

      'app-type': arrType,

      'did': did,

      'time': time

    }

    // 2.1  先把對象合並成一個對象

    let init = Object.assign({}, init,obj}   // init 函數內部的對象  obj  外部傳進來的對象  得到一個新的對象

    //===   Object.assign()  是合並對象的方法  只是其中之一   也有jQuery.extend()  也可以實現  或者原生JavaScript  反正多種

    let pro = [ ]  //聲明一個空數組

    let $i = 0

    for(let key in init)   {  //取出對象里面的鍵  添加到數組中

       pro[$i] = key

      $i++

    }

    pro.sort()   //把數組里面進行排序

    let string  = ''

    let $j = 0

    for (let tmp in init) {   // 根據排序好的進行重新賦值

      string+= pro[$j] + init[pro[$j]]

      $j++

    }

    console.log(string)  // 得到排序好的值

    let sign = md5.hexMD5(string)  // 得到加密后的字符串  

    let rourse = {

      'sign' : sign 

      'app-type': arrType,

      'did': did,

      'time': time

   }

    //== 2.2  如果需要把外部進來的對象 返回出去  在加密完成后   再次合並對象  在這里就用個原生的方法實現吧

     function extend (target,resource) {

        for(let key in resource) {

          if( resource.hasOwnProperty(key) && !target.hasOwnProperty(key){  //判斷對象是有相同的屬性

            target[key]  = resource[key]

          }

        }

        return target

     }

     //== 把兩個對象傳進去進行操作 返回一個新的

     let rourse = extend(init,obj)   調用就可以直接得到對應的值

    return rourse  //return 出去

    ---------------------------------------------拓展加密

    //2..需要從外部傳進來進行先進行排序 后加密  可以傳進來一個對象object

    

}

module.exports = {  //導出

  creatheaderkey: creatheaderkey

}

 

 

 

//=====引入js  調用

 const utils = require(../urils.js)

 let headerkey = utils.creatheaderkey()

 console.log(headerkey)   // 不傳參的情況下  得到排序好的值

 let obj = {

  'token' : 'asasdasdadasdasd123132123'

  }

  let headerkey  =utils.creatheaderkey(obj)

  console.log(headerkey)  //  返回一個帶參數的值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM