最近因为业务需求,需要使用加密数据进行接口请求,从而可以保证数据安全,起码不会那么明显,最终博主查找资料后,采用了AES加密,下面就是分享整个加密解密的流程,首页是自己封装的一个类库,代码如下:

namespace ClassPHP\Aes;class Aes
{/*** var string $method 加解密方法,可通过openssl_get_cipher_methods()获得*/protected $method;/*** var string $secret_key 加解密的密钥*/protected $secret_key;/*** var string $iv 加解密的向量,有些方法需要设置比如CBC*/protected $iv;/*** var string $options (不知道怎么解释,目前设置为0没什么问题)*/protected $options;/*** 构造函数** @param string $key 密钥* @param string $method 加密方式* @param string $iv iv向量* @param mixed $options 还不是很清楚**/public function __construct($key, $method = 'AES-128-ECB', $iv = '', $options = 0){// key是必须要设置的$this->secret_key = isset($key) ? $key : 'morefun';$this->method = $method;$this->iv = $iv;$this->options = $options;}/*** 加密方法,对数据进行加密,返回加密后的数据** @param string $data 要加密的数据** @return string**/public function encrypt($data){return openssl_encrypt($data, $this->method, $this->secret_key, $this->options, $this->iv);}/*** 解密方法,对数据进行解密,返回解密后的数据** @param string $data 要解密的数据** @return string**/public function decrypt($data){return openssl_decrypt($data, $this->method, $this->secret_key, $this->options, $this->iv);}
}

然后就是我们写的一个公共配置文件,专门用来进行加解密的,代码如下:

#引入加密类库
require 'ClassPHP/Aes.php';
use ClassPHP\Aes\Aes;/*** 解密数据* @param $data* @return mixed|string*/
function decryptData($data)
{#密钥信息$key = "16位密钥";    //密钥$iv = "16位偏移量";   //偏移量#初始化类$aes = new Aes($key, 'AES-128-CBC', $iv);//解密$decrypted = $aes->decrypt($data);//判断是否为空if (empty($decrypted)) {return "";}//json转数组$result = json_decode($decrypted, true);//返回return $result;}/*** 加密数据* @param $data* @return mixed*/
function encryptData($data)
{#密钥信息$key = "16位密钥";    //密钥$iv = "16位偏移量";   //偏移量#初始化类$aes = new Aes($key, 'AES-128-CBC', $iv);$encrypted = $aes->encrypt($data);return $encrypted;
}

下面是我们的业务引用逻辑,代码如下:

#引入公告配置
require __DIR__ . "/aseComm.php";#获取用户加密数据
$request = $_POST["request"];
if (!isset($request) || empty($request)) {echo "参数获取失败";exit();
}
#解密数据
$requestParams = decryptData($request);
#判断是否正确
if (!isset($requestParams["uid"])) {echo "非法请求";exit();
}
#处理逻辑

这样我们就实现了前端传过来的数据进行解密,并处理逻辑,这样可以防止恶意调我们的接口,或者请求参数暴露在外面。

更多文章请识别以下微信小程序二维码进行查看

PHP使用AES加密和解密相关推荐

  1. 探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!

    前言 对于数据加密和解密每次我都是从网上拷贝一份,无需有太多了解,由于在.net core中对加密和解密目前全部是统一了接口,只是做具体的实现,由于遇到过问题,所以将打算基本了解下其原理,知其然足矣, ...

  2. Java中的AES加密和解密(CBC模式)

    通过有线方式传输诸如纯文本密码之类的机密数据总是容易受到安全性的影响,始终建议对此类信息进行加密并使用SSL传输这些机密数据.Java为此提供了多种加密算法.在本文中,我们将讨论Java中具有CBC模 ...

  3. Oracle的AES加密与解密用法

    Oracle的AES加密与解密用法 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/it ...

  4. python实现字母的加密和解密 字典_python实现AES加密与解密

    AES加密方式有五种:ECB, CBC, CTR, CFB, OFB 从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现 python 在 Windows下使用AE ...

  5. aes加密算法python实现_Python基于pycrypto实现的AES加密和解密算法示例

    本文实例讲述了Python基于pycrypto实现的AES加密和解密算法.分享给大家供大家参考,具体如下: 一 代码 # -*- coding: UTF-8 -*- import string imp ...

  6. oracle实现aes解密_Oracle的AES加密与解密用法

    Oracle的AES加密与解密用法 2013年12月11日 11:50:35 iteye_751 阅读数:428 --加密字符串 create or replace function des3_enc ...

  7. Php AES加密、解密与Java互操作的问题

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  8. 每日一课 | AES加密和解密(CBC模式)

    通过有线方式传输诸如纯文本密码之类的机密数据总是容易受到安全性的影响,始终建议对此类信息进行加密并使用SSL传输这些机密数据.Java为此提供了多种加密算法.在本文中,我们将讨论Java中具有CBC模 ...

  9. openssl 加密解密 指令_openssl命令aes加密和解密

    openssl命令aes加密和解密 日期:2014-11-12 10:41:25 最后更新日期:2017-07-06 10:00:10 [技术] man openssl查看openssl的功能: [c ...

  10. Golang里的AES加密、解密

    AES加密和解密的三种模式实现(CBC/ECB/CFB) package mainimport ( "bytes" "crypto/aes" "cry ...

最新文章

  1. BitMap 内存使用优化
  2. pytorch筛选统计
  3. 推荐:制作地图的网站和工具
  4. 判断单链表中的元素是否递增_检测单链表中是否有环(C语言)
  5. mysql客户端查询_MySQL数据库之利用mysql客户端查询UCSC数据库
  6. 开发物体识别桌、_科研人员开发突破性的技术,允许盲人识别形状和物体
  7. 回头看看的时候openeim001
  8. Docker教程(四) Docker镜像构建
  9. EL表达式、 jstl标签
  10. AngularDart Material Design 选项树
  11. java cryptojs_CryptoJS用法
  12. python课程计算bmi_Python第十一课 计算体脂率1.0
  13. 残差平方和(RSS)、均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)
  14. matlab两个力的合成与分解,[转帖]小波图像分解与合成(例子) - Matlab讨论区 - 振动论坛 动力学,噪声 -......
  15. 个人项目----吴华文
  16. Facebook - 150亿张照片海量存贮架构
  17. 十进制转为二十六进制
  18. 关于asc、txt格式到pcd、ply格式数据转换
  19. 操盘手与散户老妈的对话 看完后所有人都沉默了
  20. 通过百度API获取城市经纬度(1)

热门文章

  1. 解读Secondary NameNode的功能
  2. 深入探访支付宝双11十年路,技术凿穿焦虑与想象极限 | CYZONE特写...
  3. 解决一下 WebView2 不能用 socket5代理的问题。
  4. C/C++条件运算符你不知道的那些事
  5. Stellarium0.19.3国内下载(64位)
  6. 南京审计学院计算机专业老师,南京审计学院如此对待一位好老师!!(转载)
  7. defineProperty 和 proxy 的区别
  8. 基于PCA算法生成平均脸
  9. 算法与数据结构——百度笔试题(一)
  10. 入侵一个网站的服务器拿数据,入侵一个网站的服务器拿数据库