算法一: 

//加密函数
function lock_url($txt,$key='yang')
{$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 unlock_url($txt,$key='yang')
{$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);
}

算法二:

function passport_encrypt($txt, $key = 'yang')
{ srand((double)microtime() * 1000000); $encrypt_key = md5(rand(0, 32000)); $ctr = 0; $tmp = ''; for($i = 0;$i < strlen($txt); $i++) { $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr; $tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]); } return urlencode(base64_encode(passport_key($tmp, $key)));
}
function passport_decrypt($txt, $key = 'yang')
{ $txt = passport_key(base64_decode(urldecode($txt)), $key); $tmp = ''; for($i = 0;$i < strlen($txt); $i++) { $md5 = $txt[$i]; $tmp .= $txt[++$i] ^ $md5; } return $tmp;
} 

算法三:

//加密函数
function lock_url($txt,$key='yang')
{$txt = $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(base64_encode($ch.$tmp));
}
//解密函数
function unlock_url($txt,$key='yang')
{$txt = base64_decode(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 trim(base64_decode($tmp),$key);
}

转载于:https://www.cnblogs.com/yang-2018/p/10195206.html

php 加密解密函数封装相关推荐

  1. php动态密码和加密解密函数的使用(动态密码、Discuz核心函数AuthCode、任意输入密码验证)

    php加密解密的使用 一.项目说明 二.项目分析 1.js外部文件 2.HTML容器构建 3.layui前端验证 4.php后端验证 封装函数 密码验证规则 strpos内置函数 三.经典的核心加密函 ...

  2. php中的base64,php中base64_decode与base64_encode加密解密函数

    php中base64_decode与base64_encode加密解密函数,实例分析了base64加密解密函数的具体用法,具有一定的实用价值,需要的朋友可以参考下 本文实例讲述了php中base64_ ...

  3. 【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )

    文章目录 一.导入第三方库头文件 二.头文件说明 1.兼容 C++ 语言 2.头文件导入限制 3.加密解密函数说明 一.导入第三方库头文件 对文件进行加密 , 将文件中的数据分成若干块 , 一块一块的 ...

  4. 加密解密php,2个比较经典的PHP加密解密函数分享

    项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理. 最常见的应用在用户登录以及一些AP ...

  5. php可逆加密解密函数,php 好用可逆的 加密解密 函数。

    php 好用可逆的加密解密函数. function encode($content, $key = 'pass' ) { // 加密数据的函数 , 主要进行移位操作 $key = md5($key); ...

  6. 字符串加密解密函数 (C#) (转)

    字符串加密解密函数 (C#) (转) 字符串加密解密函数 (C#) using System; using System.Text; using System.Security.Cryptograph ...

  7. 自己实现的php加密解密函数结果纯字母和数字

    php自带的base64加密解密函数大部分人都知道,加密后很容易被解密,所以就自己实现的php加密解密函数,密文是字母和数字组合. <?php /* *加密 */ function encode ...

  8. 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)

    普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语言时这类可逆函数非常难搞定.所以这时尽量使用AES DES RC4 Rabb ...

  9. JavaScript 自写加密解密函数

    JavaScript 自写加密解密函数 版权声明:本文为CSDN博主「zshsats」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:https:// ...

最新文章

  1. sqlite3.OperationalError: database is locked
  2. Cygwin运行nutch报错:Failed to set permissions of path
  3. python爬虫提取人名_python爬虫—爬取英文名以及正则表达式的介绍
  4. C++远征之封装篇——对象数组,对象成员
  5. 一步一步写算法(之排序二叉树线索化)
  6. iPhone SDK开发基础之使用UINavigationController组织和管理UIView
  7. 程序猿的执业修养(七)——不要卖弄,多思慎言
  8. ASCIIMathML技术简介~
  9. 滴滴出行场景中语音识别模型的自学习平台化实践
  10. 富滇银行 Windows7 无法使用U盾【证书信息读取失败,请选择正确的富滇银行网银证书!】 解决办法
  11. 二十一世纪大学英语读写基础教程学习笔记(原文)——3 - Mothers(母亲)
  12. saas系统服务器搭建,SaaS平台部署.doc
  13. CSAPP Bomb Lab
  14. 20220728使用电脑上的蓝牙和汇承科技的蓝牙模块HC-05配对蓝牙串口传输
  15. (内含两种方式)Android 在线查看文档world丶xls丶ppt等文件
  16. 在通用计算机内 PC是指,计算机模拟考试题答案
  17. Normalization如何解决梯度消失
  18. 【数据库原理及应用】——数据库系统结构和组成(学习笔记)
  19. JMeter基础使用教程及使用技巧(快速入门)
  20. 深入理解假设检验的两类错误和功效

热门文章

  1. Java的子类可以继承父类的静态变量和静态方法吗?
  2. MySQL的存储过程和函数简单写法
  3. HDR和SDR的区别
  4. docker create_Docker动手教程2.2:容器基本操作2
  5. 驱动级的自动按键_空调遥控器特殊按键使用方法及注意事项
  6. linux下kegg注释软件,KEGG功能注释工具 KofamKOALA 安装与使用
  7. okhttp 连接池_okhttp 源码分析
  8. 【C语言】结构体赋值
  9. 字符斜杠是合法常量吗_【面试秘籍】你对String的intern方法了解吗
  10. 涡轮流量计说明书_实际应用中超声波流量计与电磁流量计哪个更好用