zoukankan      html  css  js  c++  java
  • 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)  //  返回一个带参数的值

  • 相关阅读:
    JNI接口的使用(简单版)
    Android内核剖析(1)
    Spring 和 Mybatis 整合
    AppStore被拒原因及总结
    iOS开发中,应用内直接跳转到Appstore
    ios 中生成二维码和相册中识别二维码
    IOS开发中(null)与<null>的处理
    融云即时通讯~~
    iOS中菊花。。。
    关于判断邮箱 手机号等一系列的正则表达式
  • 原文地址:https://www.cnblogs.com/PinkYun/p/9842108.html
Copyright © 2011-2022 走看看