微信小程序使用AES加密和解密

本文介绍了如何在微信小程序中实现AES加密和解密,以确保前端请求后端接口时参数的安全。通过在request请求中应用加密技术,提升数据传输的保密性。
摘要由CSDN通过智能技术生成

前端请求后端接口进行参数加密处理:

const CryptoJs = require('crypto-js');
const defaultKey = "zoe_nurse_qazxr8"; // 默认的key
const defaultIv = "qwertyuiopasdfgh"; // 默认的key 偏移量

/**
 * 加密方法
 * @param: str 需要加密的字符
 * @param: key 密钥
 * @param: iv 密钥偏移量
 */
function encrypt(str, key, iv) {
    const keyStr = key ? encParse(key) : encParse(defaultKey);
    const ivStr = iv ? encParse(iv) : encParse(defaultIv);
    
    const encryptedStr = CryptoJs.AES.encrypt(str, keyStr, {
        iv: ivStr,
        mode: CryptoJs.mode.CBC,
        padding: CryptoJs.pad.Pkcs7
    });
    
    // 直接toString()是base64格式的字符串
    // ciphertext.toString() 是128位的字符串
    return encryptedStr.toString();
}
/**
 * 解密方法
 * @param: str 需要解密的字符
 * @param: key 密钥
 * @param: iv 密钥偏移量
 */
function decrypt(str, key, iv) {
    const keyStr = key ? encParse(key) : encParse(defaultKey);
    const ivStr = iv ? encParse(iv) : encParse(defaultIv);
    
    // 判断str是否为base64,如果不是就要转base64,是了就不能再转
    const flag = isBase64(str);
    if (!flag) {
        // 转为base64之前要先转16进制
        str = CryptoJs.enc.Hex.parse(str);
        // 只有base64格式的字符才能被解密
        str = CryptoJs.enc.Base64.stringify(str);
    }
    
    const encryptedStr = CryptoJs.AES.decrypt(str, keyStr, {
        iv: ivStr,
        mode: CryptoJs.mode.CBC,
        padding: CryptoJs.pad.Pkcs7
  
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
下面是一个封装了微信小程序AES解密的方法,并给出了使用流程: 1. 创建一个名为`aesDecrypt`的解密方法,该方法接收三个参数:`encryptedData`(待解密的密文数据)、`sessionKey`(会话密钥)、`iv`(偏移量)。 ```javascript function aesDecrypt(encryptedData, sessionKey, iv) { const CryptoJS = require('crypto-js'); const key = CryptoJS.enc.Base64.parse(sessionKey); const decrypted = CryptoJS.AES.decrypt(encryptedData, key, { iv: CryptoJS.enc.Base64.parse(iv), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return decrypted.toString(CryptoJS.enc.Utf8); } ``` 2. 调用`aesDecrypt`方法解密数据。 ```javascript const encryptedData = '...'; // 待解密的密文数据 const sessionKey = '...'; // 会话密钥 const iv = '...'; // 偏移量 const decryptedData = aesDecrypt(encryptedData, sessionKey, iv); console.log(decryptedData); ``` 确保将正确的密文数据、会话密钥和偏移量传递给`aesDecrypt`方法。 使用流程如下: 1. 获取微信小程序的加密后数据(如用户信息等)以及加密算法相关信息(会话密钥、偏移量等)。 2. 调用`aesDecrypt`方法,传入相应的参数,进行解密操作。 3. 获取解密后的明文数据进行后续业务处理。 请注意,以上代码仅为示例,实际使用时需要根据小程序的具体情况和加密算法的要求进行相应的调整。同时,确保在真实项目中使用安全的加密方式和合适的密钥管理策略,以保护数据的安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值