crypto-js的前端md5加密

现在的一个需求就是要前端这边做md5加密,本来想要用crypto,而crypto是node内置的模块,在npm查了一下,这个包已经没有了,所以改用crypto-js,这个还是很简单的。

我们这边的md5的加密规则如下:

  1. 将除了sign和appKey以外的,一级请求参数(不包含对象数组等)根据key值按照字母表的顺序(a~z)排序,将其对应参数值(仅value,不要key)拼接到一起,得到字符串A
  2. 拼接 appKey+A+appSecret ,得到字符串B
  3. 将字符串B 进行urlencode(utf-8)编码,结果转化为大写,得到字符串C。除了字符、数字、下划线全部编码
  4. 将字符串C 进行MD5编码,结果转化为大写,得到字符串D

所以可以将这些都写在一个js里面,然后引入就好了

// md5.js
/* eslint-disable */
import CryptoJS from 'crypto-js'
// md5 加密
const md5 = str => CryptoJS.MD5(str).toString().toUpperCase()
export const sign = (params, appKey, appSecret) => {
  const obj = {}
  let str = ''

  for (const k in params) {
    if (['sign', 'appKey'].includes(k) || k instanceof Array || k instanceof Object || params[k] === undefined) {
      continue
    }

    obj[k] = params[k]
  }

  Object.keys(obj).sort().forEach(k => {
    console.log(k, ': ', obj[k]);
    str += obj[k]
  })
  str = encodeURI(`${ appKey }${ str }${ appSecret }`).toUpperCase()
  console.log('str-------------->', str)
  return md5(str);
}

// const params = {"restaurantId":"1106073","lat":31.298,"lng":121.448,"channel":"ele"};
// console.log(sign(params, '9381936516', 'D31ba58fd73C71db697ab5E4946D52F'));

用ES6的import 引入调用


// index.js


import { sign as getSign } from './md5'

const appKey = '888888888'
    const appSecret = 'sdggdsgcdhdshdhfhhfhdhhhfvc'
    const sign = getSign(postDatas, appKey, appSecret)
    console.log('sign', sign)

 

关注一下公众号呀~

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值