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 相关文章推荐
一个多文件上传的例子(原创)
Oct 09 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
Oct 04 PHP
php 网页游戏开发入门教程一(webgame+design)
Oct 26 PHP
PHP网站备份程序代码分享
Jun 10 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
Nov 11 PHP
PHP 提取图片img标记中的任意属性的简单实例
Dec 10 PHP
Yii2如何批量添加数据
May 17 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
Nov 14 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
Nov 20 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
laravel自定义分页效果
Jul 23 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&amp;&amp;mysql)六
2006/10/09 PHP
PHP 开发环境配置(测试开发环境)
2010/04/28 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
JavaScript对象、属性、事件手册集合方便查询
2010/07/04 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
js 通用订单代码
2013/12/23 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
vue登录注册实例详解
2019/09/14 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
Python实现的Kmeans++算法实例
2014/04/26 Python
详解在Python中处理异常的教程
2015/05/24 Python
基于并发服务器几种实现方法(总结)
2017/12/29 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
综合办公室主任职责
2013/12/16 职场文书
财务主管自我鉴定
2014/01/17 职场文书
学前班评语大全
2014/05/04 职场文书
农村文化活动总结
2014/08/28 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
Python办公自动化解决world文件批量转换
2021/09/15 Python
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers