更新记录

1.0.0(2024-11-26) 下载此版本


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
× × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
×

当是自己存储的,我觉得有用

由于依赖crypto-js,首先终端安装crypto-js

npm install crypto-js

在你需要加密的uniapp页面调用

import { jiami, jiemi } from '@/js_sdk/jm-jm/jm.js';

然后需要使用的地方

this.xuyaojiamide=jiami(val);//加密方式
this.xuyaojiemide=jiemi(val);//解密方式

iv是随机的,修改jm.js里面的keyCode为自己的key

const keyCode = '1234567890ABCDEF1234567890ABCDEF';

以下php代码,同样改成和你jm.js一样的key

function jiami($word) {
    $keyCode = '1234567890ABCDEF1234567890ABCDEF';
    $key = hex2bin($keyCode);

    // 生成一个随机的16字节IV
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-128-CBC'));

    $encrypted = openssl_encrypt($word, 'AES-128-CBC', $key, OPENSSL_RAW_DATA,$iv);
    // 将IV和加密后的数据一起使用Base64编码,以便传输
    return base64_encode($iv .$encrypted);
}

function jiemi($encryptedBase64) {
    $keyCode = '1234567890ABCDEF1234567890ABCDEF';
    $key = hex2bin($keyCode);

    // 使用Base64解码接收到的加密字符串
    $encrypted = base64_decode($encryptedBase64);
    // 从加密数据中提取IV
    $iv = substr($encrypted, 0, openssl_cipher_iv_length('AES-128-CBC'));
    $encrypted = substr($encrypted, openssl_cipher_iv_length('AES-128-CBC'));

    $decrypted = openssl_decrypt($encrypted, 'AES-128-CBC', $key, OPENSSL_RAW_DATA,$iv);
    return $decrypted;
}

thinkphp可将此php写到common,然后注册中间件达到所有输出的json里面都是加密的内容,

中间件代码如下

    //以下内容自行修改,可能我错了
    //排除不需要加密输出的模型
     protected $whiteList = [

        '/app/user/yanzhengma',

    ];

    public function handle($request, \Closure $next)
    {
        // 调用下一个中间件或控制器
        $response = $next($request);
         $url   = strtolower($request->baseUrl()); //获取url地址, 不带域名,然后小写,
        if(in_array($url,$this->whiteList)) return $next($request);
        // 获取原始内容
        $content = $response->getContent();

        // 进行简单的加密处理(示例使用 base64_encode,可以替换为实际的加密算法)
        $jiamihou = jiami(json_encode($content));

        $data['d']=$jiamihou;
        $newResponse = Response::create($data, 'json');
        return $newResponse; // 返回修改后的响应
    }

直接在你需要的加密的应用下面注册中间件即可,代码如下

<?php

// 这是系统自动生成的middleware定义文件
return [
    'think\middleware\SessionInit',
        //获取所有return进行加密
    \app\middleware\EncryptResponse::class,
   //获取中间件路径,自己根据喜好定义
   // \app\middleware\jiamijiemi::class,
];

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问