文章目录
- 记录一下加密这个问题 不知道其他同行怎么操作的 我一直稳定使用的是CryptoJS 是个前端加密库 微信小程序这边用crypto.js 后端是PHP 用的openssl_decrypt github上的地址是
- https://github.com/brix/crypto-js
- 访问了下载相应文件就OK 或者直接npm直接安装也ok
- npm install crypto-js
- 微信小程序这边 贴下代码 方法是写在base.js里的 方便其他文件进行调用
- config.js的文件里 单独声明了加密盐 这个字符串自己定义 需要和服务端那边的加密盐对应好 按照时间修改的时候 也需要前后端统一修改 否则加解密会出错
- 一般会在组装完数据 准备调用API的时候 把数据加密完 再进行接口调用
- PHP这边 官方文档的地址是
- https://www.php.net/manual/zh/function.openssl-decrypt.php
- 加解密的方法也贴一下
- 前端小程序传入的加密字符串 调用PHP这边的方法进行解密 同样的 PHP这边的方法也可以做数据加解密 返回到小程序前端
- 很方便 速度也不慢 就是数据组装时的格式 数组或者json字符串 服务端这边解密的时候也得相应做格式解析 安全起见 使用一段时间之后 前后端可以协调好 更换加密盐就ok
记录一下加密这个问题 不知道其他同行怎么操作的 我一直稳定使用的是CryptoJS 是个前端加密库 微信小程序这边用crypto.js 后端是PHP 用的openssl_decrypt github上的地址是
https://github.com/brix/crypto-js
访问了下载相应文件就OK 或者直接npm直接安装也ok
npm install crypto-js
微信小程序这边 贴下代码 方法是写在base.js里的 方便其他文件进行调用
const CryptoJS = require('./crypto.js'); // 加密解密方法:string-需要解密的字段 code-约定的密钥 operation 默认false表示加密,传入true表示解密 encryptData(string, code, operation) { var code = CryptoJS.MD5(code).toString() var iv = CryptoJS.enc.Utf8.parse(code.substring(0, 16)) var key = CryptoJS.enc.Utf8.parse(code.substring(16)) if (operation) { return CryptoJS.AES.decrypt(string, key, { iv: iv, padding: CryptoJS.pad.Pkcs7 }).toString(CryptoJS.enc.Utf8) } return CryptoJS.AES.encrypt(string, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }).toString() }
config.js的文件里 单独声明了加密盐 这个字符串自己定义 需要和服务端那边的加密盐对应好 按照时间修改的时候 也需要前后端统一修改 否则加解密会出错
Config.salt = 'xxxxxxxxxxxxxxxxxxx';
一般会在组装完数据 准备调用API的时候 把数据加密完 再进行接口调用
that.encryptData(JSON.stringify(dataArr), Config.salt, false);
PHP这边 官方文档的地址是
https://www.php.net/manual/zh/function.openssl-decrypt.php
加解密的方法也贴一下
/** * 服务器加解密方法 * * @param $string * @param bool $operation false加密 true解密 * @return null * @date 2025/10/18 18:00 */public function __construct(){ $this -> secretKey = config('wx.salt');}public function dataEncryptAndDecrypt($string, bool $operation) { $code = md5($this -> secretKey); $iv = substr($code,0,16); $key = substr($code,16); if($operation){ return openssl_decrypt(base64_decode($string),"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv); } return base64_encode(openssl_encrypt($string,"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv));}
前端小程序传入的加密字符串 调用PHP这边的方法进行解密 同样的 PHP这边的方法也可以做数据加解密 返回到小程序前端
很方便 速度也不慢 就是数据组装时的格式 数组或者json字符串 服务端这边解密的时候也得相应做格式解析 安全起见 使用一段时间之后 前后端可以协调好 更换加密盐就ok
保持好奇 不断进步 下期见~