php加密算法之实现可逆加密算法和解密分享


Posted in PHP onJanuary 21, 2014

加密算法如下:

function encrypt($data, $key)
{
 $key = md5($key);
    $x  = 0;
    $len = strlen($data);
    $l  = strlen($key);
    for ($i = 0; $i < $len; $i++)
    {
        if ($x == $l) 
        {
         $x = 0;
        }
        $char .= $key{$x};
        $x++;
    }
    for ($i = 0; $i < $len; $i++)
    {
        $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
    }
    return base64_encode($str);
}

解密算法如下:

function decrypt($data, $key)
{
 $key = md5($key);
    $x = 0;
    $data = base64_decode($data);
    $len = strlen($data);
    $l = strlen($key);
    for ($i = 0; $i < $len; $i++)
    {
        if ($x == $l) 
        {
         $x = 0;
        }
        $char .= substr($key, $x, 1);
        $x++;
    }
    for ($i = 0; $i < $len; $i++)
    {
        if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))
        {
            $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
        }
        else
        {
            $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
        }
    }
    return $str;
}

上述加密解密的过程均需要用到一个加密密钥(即参数$key)。

$data = 'PHP加密解密算法';  // 被加密信息
$key = '123';     // 密钥
$encrypt = encrypt($data, $key);
$decrypt = decrypt($encrypt, $key);
echo $encrypt, "\n", $decrypt;

上述将输出类似如下结果:

gniCSOzZG+HnS9zcFea7SefNGhXF
PHP加密解密算法

从上述结果可以看出,这是一组可逆的加密解密算法,可以用于部分需要还原的数据加密。

PHP 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
php adodb介绍
Mar 19 PHP
PHP 页面编码声明方法详解(header或meta)
Mar 12 PHP
PHP中uploaded_files函数使用方法详解
Mar 09 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
Mar 18 PHP
微信第三方登录(原生)demo【必看篇】
May 26 PHP
laravel学习笔记之模型事件的几种用法示例
Aug 15 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
php web环境和命令行环境下查找php.ini的位置
Jul 17 PHP
检查用户名是否已在mysql中存在的php写法
Jan 20 #PHP
php设计模式之单例模式使用示例
Jan 20 #PHP
php实现图形显示Ip地址的代码及注释
Jan 20 #PHP
php判断手机访问还是电脑访问示例分享
Jan 20 #PHP
利用中国天气预报接口实现简单天气预报
Jan 20 #PHP
php日历制作代码分享
Jan 20 #PHP
php使用qr生成二维码的示例分享
Jan 20 #PHP
You might like
PHP的Yii框架入门使用教程
2016/02/15 PHP
smarty模板数学运算示例
2016/12/11 PHP
用jQuery扩展自写的 UI导航
2010/01/13 Javascript
可简单避免的三个JS发布错误的详细介绍
2013/08/02 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
jQuery自动完成插件completer附源码下载
2016/01/04 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
遍历json获得数据的几种方法小结
2017/01/21 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
python递归实现快速排序
2018/08/18 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
Python Selenium截图功能实现代码
2020/04/26 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
提高EJB性能都有哪些技巧
2012/03/25 面试题
教师队伍管理制度
2014/01/14 职场文书
《大自然的语言》教学反思
2014/04/08 职场文书
禁止酒驾标语
2014/06/25 职场文书
高效课堂标语
2014/06/26 职场文书
出售房屋委托书范本
2014/09/24 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python