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 相关文章推荐
php中大括号作用介绍
Mar 22 PHP
php define的第二个参数使用方法
Nov 04 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
symfony2.4的twig中date用法分析
Mar 18 PHP
php简单实现多语言切换的方法
May 09 PHP
thinkPHP线上自动加载异常与修复方法实例分析
Dec 01 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 PHP
在Laravel 中实现是否关注的示例
Oct 22 PHP
TP5框架安全机制实例分析
Apr 05 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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 裁剪图片
2021/03/09 PHP
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
2018/10/10 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
Python 元类使用说明
2009/12/18 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
Python类反射机制使用实例解析
2019/12/30 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
应用心理学个人求职信范文
2013/12/11 职场文书
业务员岗位职责范本
2013/12/15 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
搞笑的获奖感言
2014/08/16 职场文书
初中作文评语
2014/12/25 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
对象析构函数__del__在Python中何时使用
2022/03/22 Python
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android