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 相关文章推荐
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
php 数组的合并、拆分、区别取值函数集
Feb 15 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
Nov 29 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
解析php curl_setopt 函数的相关应用及介绍
Jun 17 PHP
一个php生成16位随机数的代码(两种方法)
Sep 16 PHP
php实现paypal 授权登录
May 28 PHP
PHP的Socket通信之UDP通信实例
Jul 02 PHP
php生成无限栏目树
Mar 16 PHP
php取出数组单个值的方法
Mar 12 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
Jun 06 PHP
laravel接管Dingo-api和默认的错误处理方式
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
利用 window_onload 实现select默认选择
2006/10/09 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
PHP goto语句用法实例
2019/08/06 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
javascript prototype原型操作笔记
2009/12/07 Javascript
一个javascript图片阅览组件
2010/11/09 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
简单实现JavaScript图片切换效果
2016/11/28 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
微信小程序解析富文本过程详解
2019/07/13 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
2019/09/05 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
tensorflow中next_batch的具体使用
2018/02/02 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
Jmeter调用Python脚本实现参数互相传递的实现
2021/01/22 Python
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
机械专业应届生求职信
2013/09/21 职场文书
电气自动化自荐信
2013/10/10 职场文书
我的求职计划书
2014/01/10 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
临床医师个人自我评价
2014/04/06 职场文书
作风整顿剖析材料
2014/09/30 职场文书
投资入股合作协议书
2014/10/28 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
超外差式晶体管收音机的组装与统调
2021/04/22 无线电