一组PHP可逆加密解密算法大屏查看

发布于:2016年02月19日 已被阅读

对于大部分密码加密,我们可以采用md5、sha1等方法。可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密。

 

对于需要还原的信息,则需要采用可逆的加密解密算法。

下面一组PHP函数是实现此加密解密的方法:

 

加密算法如下:

Php代码  收藏代码

  1. function encrypt($data$key)  

  2. {  

  3.     $key    =   md5($key);  

  4.     $x      =   0;  

  5.     $len    =   strlen($data);  

  6.     $l      =   strlen($key);  

  7.     for ($i = 0; $i < $len$i++)  

  8.     {  

  9.         if ($x == $l)   

  10.         {  

  11.             $x = 0;  

  12.         }  

  13.         $char .= $key{$x};  

  14.         $x++;  

  15.     }  

  16.     for ($i = 0; $i < $len$i++)  

  17.     {  

  18.         $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);  

  19.     }  

  20.     return base64_encode($str);  

  21. }  

 

解密算法如下:

Php代码  收藏代码

  1. function decrypt($data$key)  

  2. {  

  3.     $key = md5($key);  

  4.     $x = 0;  

  5.     $data = base64_decode($data);  

  6.     $len = strlen($data);  

  7.     $l = strlen($key);  

  8.     for ($i = 0; $i < $len$i++)  

  9.     {  

  10.         if ($x == $l)   

  11.         {  

  12.             $x = 0;  

  13.         }  

  14.         $char .= substr($key$x, 1);  

  15.         $x++;  

  16.     }  

  17.     for ($i = 0; $i < $len$i++)  

  18.     {  

  19.         if (ord(substr($data$i, 1)) < ord(substr($char$i, 1)))  

  20.         {  

  21.             $str .= chr((ord(substr($data$i, 1)) + 256) - ord(substr($char$i, 1)));  

  22.         }  

  23.         else  

  24.         {  

  25.             $str .= chr(ord(substr($data$i, 1)) - ord(substr($char$i, 1)));  

  26.         }  

  27.     }  

  28.     return $str;  

  29. }  

 

上述加密解密的过程均需要用到一个加密密钥(即参数$key)。

Php代码  收藏代码

  1. $data = 'PHP加密解密算法';        // 被加密信息  

  2. $key = '123';                   // 密钥  

  3. $encrypt = encrypt($data$key);  

  4. $decrypt = decrypt($encrypt$key);  

  5. echo $encrypt"\n"$decrypt;  

 

上述将输出类似如下结果:

gniCSOzZG+HnS9zcFea7SefNGhXF


PHP加密解密算法

从上述结果可以看出,这是一组可逆的加密解密算法,可以用于部分需要还原的数据加密。

 

原文:http://www.phper.org.cn/index.php?m=content&a=show&post_id=387


最新发布
linux下svn提交忽略某些文件... (173)
使用批处理来批量更新、提交SVN... (136)
linux查看目录文件大小命令 (145)
linux tar打包压缩排除某个... (134)
Linux tar压缩和解压 (192)
SVN子命令add用法浅析 (130)
热门博文
网友FBI探案:马蓉iPad惊人发现... (43345)
霍金携手俄罗斯富豪耗资1亿美元寻找外... (4747)
如何才能查看PHP内置函数源代码... (1209)
微信支付开发当前URL未注册的解决方... (574)
《谁为爱情买单》中的经典面试 ... (441)
让虚拟主机也用上SVN:适用于个人的... (395)
精华博文
[推荐]Centos7 安装配置 SVN (159)
easyswoole框架安装 (174)
php开启pecl的支持(推荐) (157)
1-10个恋爱表现:男朋友爱你程度到... (164)
女生喜欢你的10个程度,到第六个就可... (141)
Eclipse 没有Server选项... (211)
友情链接
我来忙 (110)