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学习 字符串课件
Jun 15 PHP
PHP setcookie() cannot modify header information 的解决方法
Jan 09 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
May 15 PHP
深入理解curl类,可用于模拟get,post和curl下载
Jun 08 PHP
解析php函数method_exists()与is_callable()的区别
Jun 21 PHP
destoon官方标签大全
Jun 20 PHP
PHP实现多图片上传类实例
Jul 26 PHP
php获取指定数量随机字符串的方法
Feb 06 PHP
PHP redis实现超迷你全文检索
Mar 04 PHP
利用PHP如何统计Nginx日志的User Agent数据
Mar 06 PHP
Laravel配合jwt使用的方法实例
Oct 25 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文件上传原理简单分析
2011/05/29 PHP
ThinkPHP分页实例
2014/10/15 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
javascript包装对象实例分析
2015/03/27 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
Python下的Mysql模块MySQLdb安装详解
2014/04/09 Python
python实现的jpg格式图片修复代码
2015/04/21 Python
基于python select.select模块通信的实例讲解
2017/09/21 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
Python安装whl文件过程图解
2020/02/18 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
英文导游欢迎词
2014/01/11 职场文书
教师辞职报告范文
2014/01/20 职场文书
法人代表授权委托书
2014/04/08 职场文书
店铺转让协议书(2014版)
2014/09/23 职场文书
购房委托书
2014/10/15 职场文书
孔庙导游词
2015/02/04 职场文书
最感人的道歉情书
2015/05/12 职场文书
给朋友的赠语
2015/06/23 职场文书
pycharm无法安装cv2模块问题
2022/05/20 Python