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三层结构(上) 简单三层结构
Jul 04 PHP
php切割页面div内容的实现代码分享
Jul 31 PHP
PHP截断标题且兼容utf8和gb2312编码
Sep 22 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
Mar 08 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
php+ajax实时刷新简单实例
Feb 25 PHP
php中有关合并某一字段键值相同的数组合并的改进
Mar 10 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 PHP
PHP读取大文件的多种方法介绍
Apr 04 PHP
降低PHP Redis内存占用
Mar 23 PHP
Laravel5.7 Eloquent ORM快速入门详解
Apr 12 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获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
3种php生成唯一id的方法
2015/11/23 PHP
zend framework中使用memcache的方法
2016/03/04 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
js正文内容高亮效果的实现方法
2013/06/30 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
2016/10/19 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
vue axios 简单封装以及思考
2018/10/09 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
Python爬虫爬验证码实现功能详解
2016/04/14 Python
python中多个装饰器的执行顺序详解
2018/10/08 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
大学生个人求职信范文
2013/09/21 职场文书
电钳专业个人求职信
2014/01/04 职场文书
电大毕业自我鉴定
2014/02/03 职场文书
物业管理毕业生的自我评价
2014/02/17 职场文书
机关节能减排实施方案
2014/03/17 职场文书
运动会演讲稿50字
2014/08/25 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
中学生自我评价2015
2015/03/03 职场文书
聘用合同范本
2015/09/21 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
2019邀请函格式及范文
2019/05/20 职场文书