【微信小程序】AES 加密接口参数


AES 加密算法

cryptojs.js (加密算法库)

secret.js (封装的函数)我放到了 /utils 里面

var crypto = require("../../utils/secret.js");

加密方法

crypto.encrypted(JSON.stringify({
        member_id: member_id,
        order_no: that.data.order_no,
        password: pass,
    })) // 先将参数转换成 JSON 字符串,然后使用封装的 encrypted 函数加密
},

接口响应 code == 0 时,需要根据响应参数对 data 解密

res.data= crypto.decrypted(res.data.data);

示例

var crypto = require("../../utils/secret.js");
var en = crypto.encrypted(JSON.stringify({code : 1, data :{id :1, name : '12123', time: '2022-01-22 12123123112'}, msg:'success'}));
console.log(en);
console.log( JSON.parse(crypto.decrypted(en)));

PHP (服务端需要开启 openssl 扩展)

/**
 * AES CBC加密算法
 * @param sSrc 加密原文字符串
 * @param sKey 加密密钥 16位字符串
 * @param sIv 加密向量 16位字符串
 * @return 加密后密文数据再转Base64字符串
 * @throws Exception
 */
function encrypt_CBC($sSrc) {
    $sKey = "1096c6******90bf";
    $sIv = "59f69******4bd0f";
    $encrypted = openssl_encrypt($sSrc, "aes-128-cbc", $sKey, OPENSSL_RAW_DATA, $sIv);
    // 此处使用BAES64做转码功能,加密后的字节数组通过BASE64转换位字符串
    return base64_encode($encrypted);
}

/**
 * AES CBC解密算法
 * @param sSrc 解密密文字符串
 * @param sKey 解密密钥 16位字符串
 * @param sIv 解密向量 16位字符串
 * @return 解密后原文数据字符串
 * @throws Exception
 */
function decrypt_CBC($sSrc){
    $sKey = "1096c6******90bf";
    $sIv = "59f69******4bd0f";
    $output = openssl_decrypt(base64_decode($sSrc), 'aes-128-cbc', $sKey, OPENSSL_RAW_DATA, $sIv);
    return json_decode($output, true);//字节数据转字符串得出原文
}

[AES加密算法的详细介绍与实现](https://blog.csdn.net/qq_28205153/article/details/55798628)