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 相关文章推荐
MySql中正则表达式的使用方法描述
Jul 30 PHP
ecshop 订单确认中显示省市地址信息的方法
Mar 15 PHP
初学PHP的朋友 经常问的一些问题。不断更新
Aug 11 PHP
PHP中source #N问题的解决方法
Jan 27 PHP
最常用的8款PHP调试工具
Jul 06 PHP
PHP命名空间namespace用法实例分析
Sep 27 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
php数据库操作model类(使用__call方法)
Nov 16 PHP
thinkPHP5.0框架安装教程
Mar 25 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP快速排序算法实现的原理及代码详解
Apr 03 PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 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/05/28 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
PHP实现添加购物车功能
2017/03/06 PHP
javaScript知识点总结(必看篇)
2016/06/10 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
详解基于vue-cli3快速发布一个fullpage组件
2019/03/08 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
python中partial()基础用法说明
2018/12/30 Python
python实现串口自动触发工作的示例
2019/07/02 Python
Python3并发写文件与Python对比
2019/11/20 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
Python内置异常类型全面汇总
2020/05/28 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
彩色的非洲教学反思
2014/02/18 职场文书
会计工作决心书
2014/03/11 职场文书
员工安全责任书范本
2014/07/24 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
2015年药房工作总结
2015/04/25 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
老人与海读书笔记
2015/06/26 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
八年级作文之友情
2019/11/25 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
python b站视频下载的五种版本
2021/05/27 Python