微信小程序使用CryptoJs对接口加解密

10 篇文章 0 订阅
8 篇文章 1 订阅
本文详细介绍了如何在微信小程序中使用CryptoJs进行AES对称加密,包括安装、引入、设置密钥、封装加解密方法,并演示了如何在业务接口中应用加密。同时提到了微信小程序内置的用户加密模块作为替代方案。
摘要由CSDN通过智能技术生成


CryptoJS是一个JavaScript加密算法库,用于实现各种加密算法和哈希函数。
1.对称加密:如AES和DES。使用相同的密钥进行加密和解密操作
2.非对称加密:如RSA。非对称加密使用一对密钥,包括公钥和私钥。公钥用于加密数据,私钥用于解密数据
3.哈希函数:包括MD5、SHA-1、SHA-256等。
4.加密模式:如ECB、CBC和CTR。这些模式定义了数据块如何被加密和连接在一起。
CryptoJS易于使用,可以在浏览器环境和Node.js环境中使用。


提示:使用前,需要跟后端沟通好,秘钥和秘钥偏移量。前后端需保持一致

一、安装CryptoJs

npm install crypto-js

安装完成之后:需要构建npm,在工具->构建 npm。构建完成之后就可以引入了

二、引入crypto-js

aesCryptoJS.js中引入 可以

const CryptoJS = require("crypto-js");

也可以

import CryptoJS from "crypto-js";

三、设置密钥和密钥偏移量

aesCryptoJS.js中设置秘钥和偏移量。需与后端保持一致,否则会解密错误

const d = "7uYhf14";
const e = "h094";
const f = "&feki";

const g = "8AYhf";
const h = "14h094E";
const i = "S4jk";
 // 十六位十六进制数作为秘钥
const key = CryptoJS.enc.Utf8.parse(d + e + f);
 // 十六位十六进制数作为秘钥偏移量
const iv = CryptoJS.enc.Utf8.parse(g + h + i);

四、封装加解密方法

aesCryptoJS.js中写入

// aes加密方法
const newAesEncrypt = (data) => {
  let srcs = CryptoJS.enc.Utf8.parse(data);
  let encrypted = CryptoJS.AES.encrypt(srcs, key, {
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7,
    iv,
  });
  return encrypted.toString();
};
// aes解密方法
const newAesDecrypt = (data) => {
  let decrypt = CryptoJS.AES.decrypt(data, key, {
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7,
    iv,
  });
  let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
  return decryptedStr;
};

五、基本简单使用方法

import { newAesEncrypt, newAesDecrypt } from "@/utils/aesCryptoJS";
 
const data = "1324234234525"
 
const encryptText = newAesEncrypt(data);
console.log("加密", encryptText);
 
const decryptText = newAesDecrypt (encryptText);
console.log("解密", decryptText);

六、对业务接口进行加接密

1、简单封装一下request.js

import { EnvConfig } from '../config/index';
export const request = (options) => {
  return new Promise((resolve, reject) => {
    wx.request({
      url: `${EnvConfig.config.host}${options.url}`,
      method: options.method,
      header: {
        'Content-Type': options.type === 1 ? 'application/json' : 'application/x-www-form-urlencoded',
      },
      timeout: 10000,
      // 这里参数,将加密后的参数,传给后端
      data: {
        ...(options.data || {}),
      },
      async success(res) {
        // 这里将后端返回的加密数据,解密后再抛出
        resolve(res.data);
      },
      fail: (err) => {
        reject(err);
      },
    });
  });
}

2、看自己业务需要针对哪些接口要加密,什么请求方式才加密

  • 只针对生产环境加密;那么在进行参数加密时,需要判断env == ‘release’,是则加密,否不加密
  • 只针对post请求加密;那么就判断请求方式method == ‘post’,是则加密,否不加密
  • 或者说:只针对生产的post请求加密,判断env == ‘release’ && method == ‘post’
  • 在接受后端返回数据时,如果没加密,那也就不需要解密了

3、代码截图
加解密

七、微信小程序提供了加解密模块

如果你不想使用crypto-js第三方,微信小程序提供自己的用户加密模块UserCryptoManager
详情请查看:
用户加密模块
小程序加密网络通道


微信小程序中的手机号解密文件cryptojs是一个可以实现加密和解密的JavaScript库。这个库提供了一些加密算法,包括AES、DES、Rabbit、RC4、SHA-1/SHA-2/SHA-3等。它的主要特点是轻量级、可扩展性好、安全性高、性能优秀等。 在微信小程序中,我们可以使用cryptojs来解密手机号码。首先,我们需要从微信服务器获取到加密后的手机号码和密钥。然后,通过cryptojs提供的解密算法,将加密后的手机号码和密钥作为参数传入,得到解密后的手机号码。 具体实现流程如下: 1. 获取加密后的手机号码和密钥 在微信小程序中,我们可以使用wx.login()接口获取到临时登录凭证以及session_key。然后,再调用wx.getUserInfo()接口获取到用户的加密数据,其中就包含了加密后的手机号码和密钥。 2. 加载cryptojs库 我们可以在小程序中导入cryptojs库的JS文件,也可以在CDN上加载库文件。当然,我们也可以将库文件下载到本地,然后在小程序中引用。 3. 解密手机号码 在获取到加密后的手机号码和密钥后,我们可以调用cryptojs提供的解密算法,将加密后的手机号码和密钥作为参数传入即可。具体的代码实现可以参考下面的示例代码: var decrypted = CryptoJS.AES.decrypt(encryptedData, sessionKey, {iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7}); var phoneNumber = decrypted.toString(CryptoJS.enc.Utf8); 通过以上步骤,我们就可以在微信小程序使用cryptojs库来解密手机号码了。需要注意的是,在使用cryptojs解密时,需要确保加密算法、密钥和初始向量都正确,否则解密会失败。同时,我们也需要注意保护好加密数据和密钥,避免泄露给不法分子。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

F2E_zeke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值