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

  • 相关阅读:
    ArcEngine 9.3 学习笔记(十一):地图输出(Printer类,PageLayoutControl控件打印出图,栅格格式文件输出,矢量格式文件输出)
    SpringBoot动态修改Logger的日志级别
    SpringBoot整合SpringDataJpa + QueryDsl以及使用案例
    HPA 自动水平伸缩(基于CPU)
    k8s dashboard:v2.0.5
    PHP debug_backtrace的胡思乱想 豆浆油条
    PHP命名空间(Namespace)初探 豆浆油条
    sphinx全文检索之PHP使用教程 豆浆油条
    sphinx中文分词搜索coreseek windows下安装与基本使用简介 豆浆油条
    PHP闭包(Closure)初探 豆浆油条
  • 原文地址:https://www.cnblogs.com/PinkYun/p/9842108.html
Copyright © 2020-2023  润新知