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

转载于:https://www.cnblogs.com/PinkYun/p/9842108.html

JavaScript实现按字典排序进行md5加密, 以及个人在小程序也可以实现相关推荐

  1. php字符串字典排序,javascript实现PHP字典排序ksort

    /** * javascript实现PHP字典排序 * @param {Object} vm 当前this * @param {Array} inputArr 规定要进行排序的数组 * @param ...

  2. map排序;MD5加密

    import java.lang.reflect.Method;import java.security.MessageDigest;import java.util.Comparator;impor ...

  3. java大写md5_java 字符按字母排序-拼接-md5加密-大写

    package yixin; import java.security.MessageDigest; import java.util.Arrays; public class data_change ...

  4. python 字典练习 记录学生是否交作业的小程序

    #记录学生是否交作业的小程序 #包括:学生名字.日期.状态 1 data={ 2 'taotao':{ 3 '2018-6-3':'已交', 4 '2018-6-4':'未交', 5 '2018-6- ...

  5. 微信小程序------MD5加密(支持中文和不支持中文)和网络请求(get和post)

    2019独角兽企业重金招聘Python工程师标准>>> 开发中常常遇到MD5加密,最近做小程序也用到了,简单总结了一下: 这要有两个加密文件,一个不支持中文,一个支持,所以你选择支持 ...

  6. 微信小程序:MD5 加密

    微信小程序是基于 js 进行封装的,所以,本质上是 js 的 MD5 加密 一个问题是,我后台服务器用的是 Python,js 和 Python 会有 MD5 密文不一致的情况 具体参考:https: ...

  7. md5加密用户登陆遇到的问题及解决办法

    有个项目的登陆模块使用到了cas,应需求要求,用户名和密码传输时使用了md5加密模式,加密的密码可以直接保存在数据库,但是加密的用户名则必须解密出来才行,于是后台的java代码中便写了针对用户名的解密 ...

  8. java md5 32位加密算法_java 32位md5加密类

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. import java.security.MessageDigest; import ja ...

  9. iOS 加密算法之MD5加密使用

    2020.06.04编辑 前言 对于加密算法这个概念我的确不太清楚,虽然我知道加密算法存在的意义,但是这并不妨碍我不知道加密算法具体都有哪些.所以今天这篇文章就是了大家一起学习开发中哪些加密算法. 在 ...

  10. 微信小程序接口实现加密

    微信小程序接口实现加密教程: 场景 小程序请求的所有接口参数必须加密,后台返回数据也需要加密,并且增加Token验证 一.小程序端功能编写 1.下载一份Js版的aesUtil.js源码.[注:文章末尾 ...

最新文章

  1. pig脚本不需要后缀名(python tempfile模块生成pig脚本临时文件,执行)
  2. iOS10 UI教程视图的绘制与视图控制器和视图
  3. 【手写系列】写出我的第一个框架:迷你版Spring MVC
  4. 【每周CV论文推荐】 初学深度学习人脸属性分析必读的文章
  5. problem a: 简单的整数排序_什么是基数排序?
  6. 【超清视频】CCNA系列课程之二:IP地址介绍及VLSM子网划分
  7. 自己帮别人写的网站可以公开源码吗_雷军靠写代码赚第一个 100 万,马化腾亲自写腾讯网,码农出身的大佬...
  8. 点开那些优秀的硕博士们的朋友圈,他们都有这些特点!
  9. J2SE J2EE J2ME的区别
  10. treelistview 所有节点失去焦点_垃圾询盘过滤,焦点科技的 Milvus 实践
  11. 单击托盘显示菜单mfc_PhotoShop制作滚动菜单栏教程
  12. AcWing 840. 模拟散列表(散列hash)
  13. 张果老能是鸿蒙时期一蝙蝠,他是八仙之一,吹一口气纸驴就能活过来,真实身份却是一只蝙蝠精...
  14. Android 12中系统Wallpaper详解1--锁屏透看壁纸和桌面透看壁纸的切换
  15. 三分钟教你开通支付宝收款二维码
  16. 万国数据二季度调整后EBITDA利润率43.5% 高于指引预测
  17. 安装CentOS找不到硬盘,无法分区,No disks selected
  18. 一个提升n倍效率的写作工具,我咋不知道?
  19. 广发证券基于分布式架构的新一代估值系统实践
  20. 汽车系统安装linux,linux系统不仅是电脑上的系统 更是会车载主流系统

热门文章

  1. 图像局部特征(四)--FAST-ER角点检测子
  2. 人脸检测(五)--adaboost总结,整理
  3. mysql指令按顺序排列_《深入浅出MySQL》读书笔记(一)sql基础,常用的操作语句。...
  4. keil5——常见报错【cannot load flash device description】
  5. CentOS安装lynis安全漏洞扫描工具
  6. 使用hive计算每一年的最大气温的日期+温度
  7. 词频统计及其效能分析
  8. Linux第二周学习笔记(12)
  9. Postdoctoral Position
  10. contentType,charset和pageEncoding的区别