几种PHP对称加密解密源码

最近搞一点东西要用到对称加密,于是在网上找到一个不错的对称加密方法,分享给大家。

/*** 简单对称加密算法之加密* @param String $string 需要加密的字串* @param String $skey 加密EKY* @return String*/
function encode($string = '', $skey = 'cxphp') {$strArr = str_split(base64_encode($string));$strCount = count($strArr);foreach (str_split($skey) as $key => $value)$key < $strCount && $strArr[$key].=$value;return str_replace(array('=', '+', '/'), array('O0O0O', 'o000o', 'oo00o'), join('', $strArr));
}/*** 简单对称加密算法之解密* @param String $string 需要解密的字串* @param String $skey 解密KEY* @return String*/
function decode($string = '', $skey = 'cxphp') {$strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2);$strCount = count($strArr);foreach (str_split($skey) as $key => $value)$key <= $strCount  && isset($strArr[$key]) && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0];return base64_decode(join('', $strArr));
}echo '<pre>';
echo "encode : " . ($enstring = encode($str)) . '<br />';
echo "decode : " . decode($enstring);
die();

安全URL编码

/*** 安全URL编码* @param string $data* @return string*/
function encode($data) {return str_replace(array('+', '/', '='), array('-', '_', ''), base64_encode(serialize($data)));
}function decode($string) {$data = str_replace(array('-', '_'), array('+', '/'), $string);$mod4 = strlen($data) % 4;($mod4) && $data .= substr('====', $mod4);return unserialize(base64_decode($data));
}

UTF8字符串加密

/*** UTF8字符串加密* @param string $string* @return string*/
function encode($string) {$chars = '';$len = strlen($string = iconv('utf-8', 'gbk', $string));for ($i = 0; $i < $len; $i++) {$chars .= str_pad(base_convert(ord($string[$i]), 10, 36), 2, 0, 0);}return strtoupper($chars);
}function decode($string) {$chars = '';foreach (str_split($string, 2) as $char) {$chars .= chr(intval(base_convert($char, 36, 10)));}return iconv('gbk', 'utf-8', $chars);
}

别的方法

//字符串加密
function lockString($txt,$key)
{$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";$nh = rand(0,64);$ch = $chars[$nh];$mdKey = md5($key.$ch);$mdKey = substr($mdKey,$nh%8, $nh%8+7);$txt = base64_encode($txt);$tmp = '';$i=0;$j=0;$k = 0;for ($i=0; $i<strlen($txt); $i++) {$k = $k == strlen($mdKey) ? 0 : $k;$j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64;$tmp .= $chars[$j];}return urlencode($ch.$tmp);
}function unlockString($txt,$key)
{$txt = urldecode($txt);$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";$ch = $txt[0];$nh = strpos($chars,$ch);$mdKey = md5($key.$ch);$mdKey = substr($mdKey,$nh%8, $nh%8+7);$txt = substr($txt,1);$tmp = '';$i=0;$j=0; $k = 0;for ($i=0; $i<strlen($txt); $i++) {$k = $k == strlen($mdKey) ? 0 : $k;$j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]);while ($j<0) $j+=64;$tmp .= $chars[$j];}return base64_decode($tmp);
}

auth_code优化版

/*** @param string $string  加密字符串内容* @param string $operation 加密或者解密* @param string $key 私钥* @param int $expiry 过期时间/秒 0为永不过期* @return false|string*/
function auth_code(string $string, $operation = 'DECODE', $key = '', $expiry = 0)
{$cakey_length = 4;$key = md5($key);$keys = md5(substr($key, 0, 16));$keytab = md5(substr($key, 16, 16));if ($operation === 'DECODE') {$key_str = substr($string, 0, $cakey_length);} else {$key_str = substr(md5(microtime()), -$cakey_length);}$keycode = $cakey_length ? $key_str : '';$cryptic = $keys . md5($keys . $keycode);$key_length = strlen($cryptic);$string = $operation === 'DECODE' ? base64_decode(substr($string, $cakey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0) . substr(md5($string . $keytab), 0, 16) . $string;$string_length = strlen($string);$result = '';$box = range(0, 255);$render = array();for ($i = 0; $i <= 255; $i++) {$render[$i] = ord($cryptic[$i % $key_length]);}for ($j = $i = 0; $i < 256; $i++) {$j = ($j + $box[$i] + $render[$i]) % 256;$tmp = $box[$i];$box[$i] = $box[$j];$box[$j] = $tmp;}for ($a = $j = $i = 0; $i < $string_length; $i++) {$a = ($a + 1) % 256;$j = ($j + $box[$a]) % 256;$tmp = $box[$a];$box[$a] = $box[$j];$box[$j] = $tmp;$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));}if ($operation === 'DECODE') {if ((strpos($result, 0) === 0 || substr($result, 0, 10) - time() > 0) && strpos(md5(substr($result, 26) . $keytab), substr($result, 10, 16)) === 0) {return substr($result, 26);}return '';}return $keycode . str_replace('=', '', base64_encode($result));
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/629915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零学Java 线程池

Java 线程池 文章目录 Java 线程池1 线程池概念1.1 现有问题1.2 线程池 2 线程池原理3 如何使用线程池3.1 获取线程池 4 创建线程的第四种方式 1 线程池概念 1.1 现有问题 线程是宝贵的内存资源、单个线程约占1MB空间&#xff0c;过多分配易造成内存溢出。频繁的创建及销毁线…

背包问题(贪心) 二维01背包问题 Java

背包问题&#xff08;贪心&#xff09; 最优装载问题 题目描述 有n件物品和一个最大承重为w 的背包。第i件物品的重量是weight[i]&#xff0c;每件只能用一次&#xff0c;求装入背包的最多物品数量。 题目分析 因为我们只要求装入物品的数量&#xff0c;所以装重的显然没有…

Angular系列教程之自定义指令

文章目录 前言指令的基本概念在模板中使用指令总结 前言 在Angular中&#xff0c;指令是一种非常强大的工具&#xff0c;用于扩展HTML元素的功能和行为。它们允许我们创建可重用的组件&#xff0c;并在应用程序中的多个地方使用它们。本文将介绍Angular指令的基础知识&#xf…

AI工具(20240116):Copilot Pro,Fitten Code等

Copilot Pro Copilot Pro是微软推出的Copilot的付费增强版本,通过提供优先访问GPT-4等最新AI模型,大大提升用户的创造力和工作效率。该服务可与Microsoft 365订阅捆绑使用,支持在Word、Excel等Office应用内直接使用Copilot功能,帮助用户更快速地起草文档、电子邮件和演示文稿等…

自动驾驶轨迹规划之碰撞检测(二)

欢迎大家关注我的B站&#xff1a; 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 目录 1.基于凸优化 2.具身足迹 3. ESDF 自动驾驶轨迹规划之碰撞检测&#xff08;一&#xff09;-CSDN博客 大家可以先阅读之前的博客 1.基于…

文件夹重命名技巧:如何避免过长名称带来的混乱,随机名称不再难

在日常生活和工作中&#xff0c;经常要管理大量的文件夹&#xff0c;有清晰、简洁的文件夹名称能大大提高工作效率。在工作的时候会遇到文件夹名称过长的问题&#xff0c;导致显示不完整、容易混淆&#xff0c;影响文件管理器的性能。下面一起来看云炫文件管理器如何批量重命名…

形成死锁的几个条件

一.什么是死锁&#xff1f; 死锁是由于两个或以上的线程互相持有对方需要的资源&#xff0c;导致这些线程处于等待状态&#xff0c;无法执行。 二.产生死锁的四个必要条件 1.互斥性&#xff1a;线程对资源的占有是排他性的&#xff0c;一个资源只能被一个线程占有&#xff0c;直…

易模真人手办定制:好技术、好服务,共建消费者满意的新一代大众定制平台

随着我国人民精神文化与物质生活的不断升级&#xff0c;定制真人手办摆件的需求变得广泛&#xff0c;易模推出易模真人手办定制服务&#xff08;小程序&#xff09;&#xff0c;帮助市场合作伙伴能够以全线上、手机端形式为用户制作真人手办&#xff0c;“全线上”的内涵包括手…

鸿蒙应用开发学习:改进小鱼动画实现按键一直按下时控制小鱼移动和限制小鱼移出屏幕

一、前言 近期我在学习鸿蒙应用开发&#xff0c;跟着B站UP主黑马程序员的视频教程做了一个小鱼动画应用&#xff0c;UP主提供的小鱼动画源代码仅仅实现了移动组件的功能&#xff0c;还存在一些问题&#xff0c;如默认进入页面是竖屏而页面适合横屏显示&#xff1b;真机测试发现…

【SpringBoot篇】添加富文本编辑器操作

文章目录 &#x1f354;使用步骤⭐首先我们需要安装富文本编辑器⭐在<script>中引入富文本编辑器⭐富文本图片上传接口⭐初始化富文本编辑器⭐调用 初始化富文本编辑器的方法&#x1f388;新增&#x1f388;编辑&#x1f388;保存 ⭐添加按钮⭐实现viewEditor函数&#x…

视觉检测系统:工厂生产零部件的智能检测

在工厂的生产加工过程中&#xff0c;工业视觉检测系统被广泛应用&#xff0c;并且起着重要的作用。它能够对不同的零部件进行多功能的视觉检测&#xff0c;包括尺寸和外观的缺陷。随着制造业市场竞争越来越激烈&#xff0c;对产品质检效率的要求不断提高&#xff0c;传统的人工…

docker试用metabase

安装 docker run -d -p 3000:3000 --name metabase metabase/metabase 初始化 填写相关信息&#xff0c;不要选中文&#xff0c;翻译太生硬了&#xff0c;很多配置项例如聚合这样的词语看不懂&#xff0c;还不如换回英文。 数据查看 在数据源中选择 show editor 可以进行数据…

【不用找素材】ECS 游戏Demo制作教程(2) 1.16

一、知识点补充 1.工程内部 上一篇最后一步运行时&#xff0c;突然发现 变成52:1了&#xff0c;难道每次baking都是随机的&#xff1f; 破案了&#xff0c;52是index索引&#xff0c;1是version版本号 如果您在场景视图中看不到实体&#xff0c;但仍然可以在游戏视图中看到…

FPGA高端项目:12G-SDI 视频编解码,提供工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的 GT 高速接口解决方案我目前已有的SDI编解码方案 3、详细设计方案设计框图UltraScale GTH 的SDI模式应用UltraScale GTH 基本结构参考时钟的选择和分配UltraScale GTH 发送和接收处理流程UltraScale GTH 发送接口UltraScale G…

数据结构与算法:归并排序

数据结构与算法&#xff1a;归并排序 归并思想递归法非递归 归并思想 在讲解归并排序前&#xff0c;我们先看到一个问题&#xff1a; 对于这样两个有序的数组&#xff0c;如何将它们合并为一个有序的数组&#xff1f; 在此我们处理这个问题的思路就是&#xff1a;开辟一个新的…

[AIGC] Spring Boot Docker 部署指南

Spring Boot Docker 部署指南 引言 近年来&#xff0c;容器化部署成为了越来越流行的部署方式。Docker 是目前最受欢迎的容器化平台之一&#xff0c;它提供了一种将应用程序与其依赖项打包在一起&#xff0c;并以容器的形式运行的方法。Spring Boot 是一种用于快速开发和微服…

Spring Boot中快速操作Mongodb

Spring Boot中快速操作Mongodb 在Spring Boot中集成Mongodb非常简单&#xff0c;只需要加入Mongodb的Starter包即可&#xff0c;代码如下&#xff1a; 复制代码<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-sta…

ATA-1222A宽带放大器在二极管测试中的应用有哪些

宽带放大器是一种用于放大高频信号的电子设备&#xff0c;它在二极管测试中有多种应用。下面安泰电子将介绍宽带放大器在二极管测试中的几种常见应用。 宽带放大器可以用于二极管参数测试。二极管是一种常见的半导体器件&#xff0c;有正向电压-电流特性和反向电压-电流特性。为…

【2.5操作系统】数据传输控制方式

目录 1.输入输出技术2.IO设备管理软件 1.输入输出技术 cpu控制&#xff08;主存/外设&#xff09;进行数据交互的过程。 中断处理操作过程&#xff1a; 例题一: 解析&#xff1a; 第一问&#xff1a;选D。中断需要cpu发送中断指令。 例题二&#xff1a; 解析&#xff1a; 第…

css-实现溢出内容转换为...格式

代码&#xff1a;overflow: hidden; text-overflow: ellipsis; overflow: hidden;//当容器中的内容超出容器的尺寸时&#xff0c;将隐藏超出部分而不显示滚动条。 display: -webkit-box;//使用WebKit引擎的浏览器&#xff08;如Chrome和Safari&#xff09;中&#xff0c;将容器…