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 11 PHP
set_include_path在win和linux下的区别
Jan 10 PHP
封装一个PDO数据库操作类代码
Sep 09 PHP
php 向访客和爬虫显示不同的内容
Nov 09 PHP
PHP多线程抓取网页实现代码
Jul 22 PHP
php获取当前时间的毫秒数的方法
Jan 26 PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
Apr 12 PHP
利用PHP生成CSV文件简单示例
Dec 21 PHP
php redis实现对200w用户的即时推送
Mar 04 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
浅析PHP中json_encode与json_decode的区别
Jul 15 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迭代器的内部执行过程详解
2013/11/12 PHP
PHP微框架Dispatch简介
2014/06/12 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
用js遍历 table的脚本
2008/07/23 Javascript
jquery CSS选择器笔记
2010/03/29 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
JavaScript canvas实现围绕旋转动画
2017/11/18 Javascript
Nginx 配置多站点vhost 的方法
2018/01/07 Javascript
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
Python strip lstrip rstrip使用方法
2008/09/06 Python
Django的session中对于用户验证的支持
2015/07/23 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
Python3列表List入门知识附实例
2020/02/09 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
Shell编程面试题
2016/05/29 面试题
GC是什么?为什么要有GC?
2013/12/08 面试题
食品销售计划书
2014/04/26 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
单位工作证明范本
2015/06/15 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
python保存图片的四个常用方法
2022/02/28 Python
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers