原生小程序实现对称加密AES

需求
  前端请求到后端返回的数据,涉及到一些敏感的数据,需要进行加密处理,前端进行解密。

在这里插入图片描述
思路:

  1. 后端加密,前端解密;后端生成加密的key值,告诉前端,前端解密的时候也需要使用该key值去解密。
  2. 小程序无法引入cdn插件crypto.js,复制该插件的源代码:https://blog-static.cnblogs.com/files/gygg/crypto-js.js,将源码粘贴在utils下新建crypto-js.js文件下
  3. 在utils下新建crypto.js文件,封装公共的解密函数并导出。
  4. 在具体的页面中,引入crypto.js,请求返回的数据直接调用解密函数。

代码:

// utils/crypto-js.js
// 打开链接https://blog-static.cnblogs.com/files/gygg/crypto-js.js,将链接里的源码复制到这里

// utils/crypto.js
var CryptoJS = require('/crypto-js.js')

// AES解密方法
function decryptByAES(ciphertext) {
  var key = '12345ABCDErwerw2'
  var keyHex = CryptoJS.enc.Utf8.parse(key);
  var result = CryptoJS.AES.decrypt(ciphertext, keyHex, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
  });
  var result_value = result.toString(CryptoJS.enc.Utf8);
  return result_value;
}

module.exports = {
  decryptByAES
}

// boxList.js
var app = getApp()
var util = require('../../../utils/util.js')
// 引入
var crypto = require('../../../utils/crypto.js')

Page({
data: {
	list: [] 
},

getList: function (query) {
    util.operBackground('加载中', `http://api.zhire.cc/jupiter/i/box/list?query_type=1&query_date=2021-02-01`, 'GET', query, res => {
      wx.hideLoading()
      if(!res.data.data){
        this.setData({
          list: []
        })
      }else{
        console.log('list2222', res.data.data.list)
        var data = res.data.data.list
        data.forEach(item => {
          // 将加密项 解密
          item.income = crypto.decryptByAES(item.income)
        })
        console.log('list3333', data)
        this.setData({
         list: data
        })
      }
    })
  },
onLoad: function () {
	this.getList()
}

})

参考文章:
微信小程序crypto-js AES 加解密数据
crypto-js源码
AES加密算法的详细介绍与实现
微信小程序crypto-js AES 加解密数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值