当前位置: 首页 > 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;}
}
http://www.lryc.cn/news/229388.html

相关文章:

  • Spark的转换算子和操作算子
  • 传奇手游天花板赤月【盛世遮天】【可做底版】服务端+自主授权+详细教程
  • TP触摸屏调试
  • 11-13 spring整合web
  • 基于C#开发的任天堂 Switch 开源模拟器
  • 做一个Sprngboot文件上传-阿里云
  • k8s ----对外暴露
  • 每日一题(LeetCode)----数组--长度最小的子数组
  • TCP与UDP
  • js实现对象数组去重
  • 2023 极术通讯-安谋科技发布“山海”S20F安全解决方案,持续加码智能汽车“芯”赛道
  • GRPC学习
  • c++ latch 使用详解
  • linux 下正确使用cp命令复制目录
  • CTF----Web真零基础入门
  • css实现元素四周阴影
  • 《QT从基础到进阶·二十五》界面假死处理
  • 卷积神经网络(1)
  • Mysql中名叫infomaiton_schema的数据库是什么东西?
  • Django(复习篇)
  • MySQL里对时间的加减操作及常用语法
  • 『MySQL快速上手』-⑨-复合查询
  • 高并发架构设计(三大利器:缓存、限流和降级)
  • ElasticSearch7.x - HTTP 操作 - 文档操作
  • [数据结构大作业]HBU 河北大学校园导航
  • 立体库堆垛机控制程序手动功能实现
  • git commit提交报错
  • OpenSIPS自定义统计项目
  • python数据结构与算法-02_数组和列表
  • 计算机网络基础知识-网络协议