PHP项目请求参数 加密和解密,thinkphp为例

为防止API请求的参数或者返回的结果内容暴露,所以对PHP项目请求的参数和响应的结果进行加密。

下面以ThinkPHP8 为例,也支持 thinkphp6。

准备:

ThinkPHP8 (API端)

vue3(前端,vue2适用)

要点:

一、服务端(API端)配置

①响应(参数)内容加密函数解析,代码说明:


$data = [];  //加密的数据 
$method = 'AES-128-CBC'; //加密方式  下面说明
$pwd='params'.time(); //加密密钥
$iv='params_iv_123456'; //初始化向量 长度根据加密方式来确定

//加密 使用openssl_encrypt函数进行AES加密

$result = openssl_encrypt(json_encode($data), "AES-128-CBC", $pwd, 0, $iv);
return $result;

/**
* 加密(解密)方式说明
*AES:高级加密标准。这是加密算法的名称(对称加密)。其他对称加密算法有:DES,3-DES等。
*128:这可能是指密钥大小。 AES加密使用3种密钥大小(128位,192位和256位)。 
*AES中的块大小也是128位。
*CBC:这是您想要的加密模式。有许多加密模式,这取决于您希望算法运行的速度,并行度和安全级别。
*一些模式*是CBC(密码块链接),ECB(电子密码本),CFB(密码反馈),CTR(计数器)等。
*
*例如:
*AES-128-ECB
*AES-256-CBC
*/

②请求(参数)内容解密,代码说明:


$data = '';  //解密字符串 
$method = 'AES-128-CBC'; //解密方式
$pwd='params'.time(); //解密密钥
$iv='params_iv_123456'; //初始化向量 长度根据解密方式来确定

//解密 使用openssl_decrypt函数进行AES解密

$result = openssl_decrypt($data, "AES-128-CBC", $pwd, 0, $iv);
return $result;

完整代码配置(ThinkPHP5以上的项目)在用于目录(app)下的 common.php 进行全局配置:

<?php
// 应用公共文件
use think\exception\HttpResponseException;
use think\Response;

/**
 * 应用公共文件
 * ①统一数据返回格式
 * ②参数加密
 * ③参数解密
 * ④图片/文件上传
 *
*/


/**
 *  统一返回数据格式
 *  状态码    描述
 * 200    请求成功
 * 204    请求成功,未返回实体,比如option请求,
 * 400    错误的请求
 * 401    认证失败,这个一般在token验证那里
 * 403    拒绝访问
 * 404    请求的资源不存在
 * 422    参数验证错误
 * 500    服务器错误
 */
function result(string $msg = 'error', array $data = [], int $code = 200, string $type = 'json'): Response
{
    $result = [
        "code" => $code,
        "msg" => $msg
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值