当前位置: 首页 > news >正文

laravel5+版本aes128加解密

使用场景:
aes/cbc/pkcs5padding/128加解密
EncryptService.php代码示例如下

namespace App\Services;/*** aes/cbc/pkcs5padding/128加解密*/
class EncryptService
{//加密方法private static $sDefaultEncMethod = 'AES-128-CBC';//默认key值-自定义16位字符串长度private static $sDefaultEncKey = 'daSe3sa2sD4fw3dk';//随机字符串长度private static $iDefaultEncIvLen = 16;//随机字符串范围private static $sDefaultChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';private static $auth_encrypt = ['cipher' => 'aes-128-ecb','key' => 'self-name'];/*** 返回固定加解密串* @param $sData* @param $sProjectName* @param string $sType* @return bool|string*/public static function getEncryptInfo($sData, $sType = 'encrypt'){//判断参数if (empty($sData)) {return false;}//存在时$sEncIv = self::$sDefaultEncKey;if ($sType == 'encrypt') {//加密$sEncryptStr = self::aesEncryptInfo($sData, $sEncIv, $sEncKey);} else if ($sType == 'decrypt') {//解密$sEncryptStr = self::aesDecryptInfo($sData, $sEncIv, $sEncKey);} else {return false;}return $sEncryptStr;}/*** 加密方法* @param string $sData 要加密的数据* @param string $sEncIv 加密使用的偏移量iv* @param string $sEncKey 加密使用的key* @param string $encryptMethod 加密使用的方法* @return string*/public static function aesEncryptInfo($sData, $sEncIv = '', $sEncKey = '', $encryptMethod = 'AES-128-CBC'){if (empty($sData)) return '';if (empty($sEncIv)) $sEncIv = self::aesRandomStr(self::$iDefaultEncIvLen);  // 随机生成16位ivif (empty($sEncKey)) $sEncKey = self::$sDefaultEncKey;$sEncrypt = openssl_encrypt($sData, $encryptMethod, $sEncKey, 1, $sEncIv);// 返回iv拼密串之后再base64_encode, rawurlencodereturn rawurlencode(base64_encode($sEncIv . $sEncrypt));}/*** 解密方法* @param string $sData 加密过的数据* @param string $sDecIv 解密使用的偏移量iv* @param string $sDecKey 解密使用的key* @param string $decryptMethod 解密使用的方法* @return string*/public static function aesDecryptInfo($sData, $sDecIv = '', $sDecKey = '', $decryptMethod = 'AES-128-CBC'){try {$iDecIvlen = $sDecIv ? strlen($sDecIv) : self::$iDefaultEncIvLen;if (empty($sDecKey)) $sDecKey = self::$sDefaultEncKey;$sData = base64_decode(rawurldecode($sData));$sDecIv = substr($sData, 0, $iDecIvlen);  // 获取IV$sData = substr($sData, $iDecIvlen);  // 获取数据return openssl_decrypt($sData, $decryptMethod, $sDecKey, 1, $sDecIv);  // 使用openssl进行解密} catch (\Exception $exception) {// 处理解密失败的逻辑}return '';}public static function medauth_encrypt($input){$cipher = self::$auth_encrypt['cipher'];$key = self::$auth_encrypt['key'];$iv = "";$encrypt = openssl_encrypt($input, $cipher, $key, OPENSSL_RAW_DATA, $iv);return base64_encode($encrypt);}public static function medauth_decrypt($input){$cipher = self::$auth_encrypt['cipher'];$key = self::$auth_encrypt['key'];$input = base64_decode($input);$iv = "";$decrypt = openssl_decrypt($input, $cipher, $key, OPENSSL_RAW_DATA, $iv);return $decrypt;}/*** 随机字符串* @param $iLength* @param string $sChars* @return string*/public static function aesRandomStr($iLength, $sChars = ''){if (empty($sChars)) {$sChars = self::$sDefaultChars;}$sHashStr = '';$iMax = strlen($sChars) - 1;for ($i = 0; $i < $iLength; $i++) {$sHashStr .= $sChars[mt_rand(0, $iMax)];}return $sHashStr;}
}

相关文章:

laravel5+版本aes128加解密

使用场景&#xff1a; aes/cbc/pkcs5padding/128加解密 EncryptService.php代码示例如下 namespace App\Services;/*** aes/cbc/pkcs5padding/128加解密*/ class EncryptService {//加密方法private static $sDefaultEncMethod AES-128-CBC;//默认key值-自定义16位字符串长度…...

Spark的转换算子和操作算子

1 Transformation转换算子 1.1 Value类型 1&#xff09;创建包名&#xff1a;com.shangjack.value 1.1.1 map()映射 参数f是一个函数可以写作匿名子类&#xff0c;它可以接收一个参数。当某个RDD执行map方法时&#xff0c;会遍历该RDD中的每一个数据项&#xff0c;并依次应用f函…...

传奇手游天花板赤月【盛世遮天】【可做底版】服务端+自主授权+详细教程

搭建资源下载地址&#xff1a;传奇手游天花板赤月【盛世遮天】【可做底版】服务端自主授权详细教程-海盗空间...

TP触摸屏调试

此处以MT6739 1g版本敦泰TP为例(kernel 4.19),主要修改点如下: 1. 两个配置文件defconfig: kernel-4.19\arch\arm\configs\k39tv1_bsp_1g_k419_debug_defconfig: kernel-4.19\arch\arm\configs\k39tv1_bsp_1g_k419_defconfig: CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCRE…...

11-13 spring整合web

spring注解 把properties文件中的key注入到属性当中去 xml配置文件拆分 -> import标签 注解开发中 import 实现 搞一个主配置类&#xff0c;其他配置类全部导入进来这个这个主配置类 而且其他配置类不需要 加上configuration注解 之前这个注解用于表示这是一个配置文件 …...

基于C#开发的任天堂 Switch 开源模拟器

今天给大家推荐一款基于C#开发的任天堂 Switch 开源模拟器&#xff0c;可方便开发人员来测试游戏&#xff0c;也用于娱乐。 01 项目简介 Ryujinx 是一个开源的任天堂 Switch 模拟器&#xff0c;可以在 PC 上模拟运行 Switch 游戏。采用C#开发&#xff0c;基于 .NET Core技术框…...

做一个Sprngboot文件上传-阿里云

概述 这个模块是用来上传头像以及文章封面的&#xff0c;图片的值是一个地址字符串&#xff0c;一般存放在本地或阿里云服务中 1、本地文件上传 我们将文件保存在一个本地的文件夹下&#xff0c;由于可能两个人上传不同图片但是却同名的图片&#xff0c;那么就会一个人的图片就…...

k8s ----对外暴露

目录 一、Ingress 简介 1、Ingress 组成 2、Ingress 工作原理 二、部署Ingress 1、部署 nginx-ingress-controller 2、暴露ingress 4.1 DaemonSetHostNetworknodeSelector模式的service 4.2 DeploymentNodePort模式的Service 三、Ingress HTTP 代理访问 四、Ingress …...

每日一题(LeetCode)----数组--长度最小的子数组

每日一题(LeetCode)----数组–长度最小的子数组 1.题目&#xff08; 209.长度最小的子数组&#xff09; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &…...

TCP与UDP

文章目录 TCP与UDP传输层的作用端口号UDPTCPUDP首部的格式TCP首部格式 TCP与UDP TCP/IP中有两个具有代表性的传输层协议&#xff0c;它们分别是TCP和UDP。TCP提供可靠的通信传输&#xff0c;而UDP则常被用于让广播和细节控制交给应用的通信传输。总之&#xff0c;根据通信的具…...

js实现对象数组去重

数组去重&#xff0c;一般会在面试的时候才会碰到&#xff0c;要求手写数组去重方法的代码。如果是被提问到&#xff0c;数组去重的方法有哪些&#xff1f;你能答出其中的10种&#xff0c;面试官很有可能对你刮目相看。 在实际项目中碰到的数组去重&#xff0c;一般都是后台去处…...

2023 极术通讯-安谋科技发布“山海”S20F安全解决方案,持续加码智能汽车“芯”赛道

导读&#xff1a;极术社区推出极术通讯&#xff0c;引入行业媒体和技术社区、咨询机构优质内容&#xff0c;定期分享产业技术趋势与市场应用热点。 芯方向 AMBA向多芯片和CHI C2C进发 Arm的Advanced Microcontroller Bus Architecture&#xff08;AMBA&#xff09;在与生态系…...

GRPC学习

GRPC元数据 在gRPC中&#xff0c;元数据&#xff08;metadata&#xff09;是用于在gRPC请求和响应中传递附加信息的一种机制。元数据是以键值对&#xff08;key-value pairs&#xff09;的形式组织的信息&#xff0c;它可以包含请求的上下文信息、安全凭证、消息传输相关的信息…...

c++ latch 使用详解

c latch 使用详解 std::latch c20 头文件 #include <latch>。作用&#xff1a;提供了一种机制&#xff0c;可以让一个或多个线程等待&#xff0c;直到计数器减为零。注意事项&#xff1a; latch 为向下计数器&#xff0c;即只能减少不能增加或者重置。这也使得其只能单…...

linux 下正确使用cp命令复制目录

linux下复制目录时&#xff0c;cp -r 没有 cp -a 好&#xff1a; 使用cp -r 拷贝数据&#xff0c;拷贝的结果是生成新的时间戳等信息 使用cp -a 相当于将原数据原封不动的拷贝过来&#xff0c;不改变里面的任何信息 指定目录时&#xff0c; 源目录/* 【说明&#xff1a;斜…...

CTF----Web真零基础入门

目录 前置知识导图&#xff1a; ​TCP/IP体系结构&#xff08;IP和端口&#xff09;&#xff1a; IP是什么&#xff1a;是计算机在互联网上的唯一标识&#xff08;坐标&#xff0c;代号&#xff09;&#xff0c;用于在互联网中寻找计算机。 内网&#xff08;局域网&#xf…...

css实现元素四周阴影

前言 首先确定的是需要使用box-shadow这一属性 语法如下&#xff1a; box-shadow: h-shadow v-shadow blur spread color inset; h-shadow&#xff1a;表示水平方向上的阴影偏移量&#xff0c;必须指明&#xff0c;可以是正数、负数、0&#xff0c;如果为正数左方有阴影&…...

《QT从基础到进阶·二十五》界面假死处理

假如有这样一种情况&#xff0c;我们在主线程写了一个死循环&#xff0c;当程序运行到主线程的死循环代码后界面便卡死点了没有反应&#xff0c;这里提供几种方法处理界面假死的情况&#xff0c;保证比如主线程在执行死循环没有退出的时候点击界面不会卡死能继续执行其他功能。…...

卷积神经网络(1)

目录 卷积 1 自定义二维卷积算子 2 自定义带步长和零填充的二维卷积算子 3 实现图像边缘检测 4 自定义卷积层算子和汇聚层算子 4.1 卷积算子 4.2 汇聚层算子 5 学习torch.nn.Conv2d()、torch.nn.MaxPool2d()&#xff1b;torch.nn.avg_pool2d()&#xff0c;简要介绍使用方…...

Mysql中名叫infomaiton_schema的数据库是什么东西?

在 MySQL 中&#xff0c;information_schema 是一个系统数据库&#xff0c;用于存储关于数据库服务器元数据的信息。它并不存储用户数据&#xff0c;而是包含有关数据库、表、列、索引、权限等方面的元数据信息。这些信息可以通过 SQL 查询来获取&#xff0c;用于了解和管理数据…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...