【微信小程序】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)