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加解密
使用场景: 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)创建包名:com.shangjack.value 1.1.1 map()映射 参数f是一个函数可以写作匿名子类,它可以接收一个参数。当某个RDD执行map方法时,会遍历该RDD中的每一个数据项,并依次应用f函…...
传奇手游天花板赤月【盛世遮天】【可做底版】服务端+自主授权+详细教程
搭建资源下载地址:传奇手游天花板赤月【盛世遮天】【可做底版】服务端自主授权详细教程-海盗空间...
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 实现 搞一个主配置类,其他配置类全部导入进来这个这个主配置类 而且其他配置类不需要 加上configuration注解 之前这个注解用于表示这是一个配置文件 …...
基于C#开发的任天堂 Switch 开源模拟器
今天给大家推荐一款基于C#开发的任天堂 Switch 开源模拟器,可方便开发人员来测试游戏,也用于娱乐。 01 项目简介 Ryujinx 是一个开源的任天堂 Switch 模拟器,可以在 PC 上模拟运行 Switch 游戏。采用C#开发,基于 .NET Core技术框…...
做一个Sprngboot文件上传-阿里云
概述 这个模块是用来上传头像以及文章封面的,图片的值是一个地址字符串,一般存放在本地或阿里云服务中 1、本地文件上传 我们将文件保存在一个本地的文件夹下,由于可能两个人上传不同图片但是却同名的图片,那么就会一个人的图片就…...
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.题目( 209.长度最小的子数组) 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &…...
TCP与UDP
文章目录 TCP与UDP传输层的作用端口号UDPTCPUDP首部的格式TCP首部格式 TCP与UDP TCP/IP中有两个具有代表性的传输层协议,它们分别是TCP和UDP。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。总之,根据通信的具…...
js实现对象数组去重
数组去重,一般会在面试的时候才会碰到,要求手写数组去重方法的代码。如果是被提问到,数组去重的方法有哪些?你能答出其中的10种,面试官很有可能对你刮目相看。 在实际项目中碰到的数组去重,一般都是后台去处…...
2023 极术通讯-安谋科技发布“山海”S20F安全解决方案,持续加码智能汽车“芯”赛道
导读:极术社区推出极术通讯,引入行业媒体和技术社区、咨询机构优质内容,定期分享产业技术趋势与市场应用热点。 芯方向 AMBA向多芯片和CHI C2C进发 Arm的Advanced Microcontroller Bus Architecture(AMBA)在与生态系…...
GRPC学习
GRPC元数据 在gRPC中,元数据(metadata)是用于在gRPC请求和响应中传递附加信息的一种机制。元数据是以键值对(key-value pairs)的形式组织的信息,它可以包含请求的上下文信息、安全凭证、消息传输相关的信息…...
c++ latch 使用详解
c latch 使用详解 std::latch c20 头文件 #include <latch>。作用:提供了一种机制,可以让一个或多个线程等待,直到计数器减为零。注意事项: latch 为向下计数器,即只能减少不能增加或者重置。这也使得其只能单…...
linux 下正确使用cp命令复制目录
linux下复制目录时,cp -r 没有 cp -a 好: 使用cp -r 拷贝数据,拷贝的结果是生成新的时间戳等信息 使用cp -a 相当于将原数据原封不动的拷贝过来,不改变里面的任何信息 指定目录时, 源目录/* 【说明:斜…...
CTF----Web真零基础入门
目录 前置知识导图: TCP/IP体系结构(IP和端口): IP是什么:是计算机在互联网上的唯一标识(坐标,代号),用于在互联网中寻找计算机。 内网(局域网…...
css实现元素四周阴影
前言 首先确定的是需要使用box-shadow这一属性 语法如下: box-shadow: h-shadow v-shadow blur spread color inset; h-shadow:表示水平方向上的阴影偏移量,必须指明,可以是正数、负数、0,如果为正数左方有阴影&…...
《QT从基础到进阶·二十五》界面假死处理
假如有这样一种情况,我们在主线程写了一个死循环,当程序运行到主线程的死循环代码后界面便卡死点了没有反应,这里提供几种方法处理界面假死的情况,保证比如主线程在执行死循环没有退出的时候点击界面不会卡死能继续执行其他功能。…...
卷积神经网络(1)
目录 卷积 1 自定义二维卷积算子 2 自定义带步长和零填充的二维卷积算子 3 实现图像边缘检测 4 自定义卷积层算子和汇聚层算子 4.1 卷积算子 4.2 汇聚层算子 5 学习torch.nn.Conv2d()、torch.nn.MaxPool2d();torch.nn.avg_pool2d(),简要介绍使用方…...
Mysql中名叫infomaiton_schema的数据库是什么东西?
在 MySQL 中,information_schema 是一个系统数据库,用于存储关于数据库服务器元数据的信息。它并不存储用户数据,而是包含有关数据库、表、列、索引、权限等方面的元数据信息。这些信息可以通过 SQL 查询来获取,用于了解和管理数据…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
