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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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
  
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值