PHP加密与解密算法

加密:

  1. function encrypt($data, $key) 
  2.     $key    =   md5($key); 
  3.     $x      =   0
  4.     $len    =   strlen($data); 
  5.     $l      =   strlen($key); 
  6.     for ($i = 0; $i < $len; $i++) 
  7.     { 
  8.         if ($x == $l)  
  9.         { 
  10.             $x = 0
  11.         } 
  12.         $char .= $key{$x}; 
  13.         $x++; 
  14.     } 
  15.     for ($i = 0; $i < $len; $i++) 
  16.     { 
  17.         $str .chr(ord($data{$i}) + (ord($char{$i})) % 256); 
  18.     } 
  19.     return base64_encode($str); 
解密:
  1. function decrypt($data, $key) 
  2.     $key = md5($key); 
  3.     $x = 0
  4.     $data = base64_decode($data); 
  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 .substr($key, $x, 1); 
  14.         $x++; 
  15.     } 
  16.     for ($i = 0; $i < $len; $i++) 
  17.     { 
  18.         if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) 
  19.         { 
  20.             $str .chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1))); 
  21.         } 
  22.         else 
  23.         { 
  24.             $str .chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1))); 
  25.         } 
  26.     } 
  27.     return $str; 

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

  1. $data = 'PHP加密解密算法';        // 被加密信息 
  2. $key = '123';                   // 密钥 
  3. $encryptencrypt = encrypt($data, $key); 
  4. $decryptdecrypt = decrypt($encrypt, $key); 
  5. echo $encrypt, "\n", $decrypt; 

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

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

转载于:https://my.oschina.net/u/2399867/blog/480882

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值