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)  //  返回一个带参数的值

 

posted @ 2018-10-24 10:29  PinkYun  阅读(2678)  评论(0编辑  收藏  举报