首页 > 开发 > PHP > 正文

PHP实现加强版加密解密类实例

2024-05-04 23:38:14
字体:
来源:转载
供稿:网友

这篇文章主要介绍了PHP实现加强版加密解密类,实例分析了php加密解密的相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了PHP实现加强版加密解密类。分享给大家供大家参考。具体如下:

 

 
  1. <?php 
  2. class Ender{ 
  3. private $enkey;//加密解密用的密钥 
  4. private $rep_char='#'
  5. //替换加密后的base64字符串中的=,因为=在有些场合是禁止使用的, 
  6. //这里可以用一个允许的字符作为替换。 
  7. //构造参数是密钥 
  8. public function __construct($key=''){ 
  9. if(!$key){ 
  10. $this->enkey=$key; 
  11. //设置密钥http://blog.ddian.cn 
  12. public function set_key($key){ 
  13. $this->enkey=$key; 
  14. private function keyED($txt,$encrypt_key)  
  15. {  
  16. $encrypt_key = md5($encrypt_key);  
  17. $ctr=0;  
  18. $tmp = "";  
  19. for ($i=0;$i<strlen($txt);$i++)  
  20. {  
  21. if ($ctr==strlen($encrypt_key)) $ctr=0;  
  22. $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);  
  23. $ctr++;  
  24. }  
  25. return $tmp; 
  26. //加密字符串 
  27. public function encrypt($txt,$key='')  
  28. if(!$key){ 
  29. $key=$this->enkey; 
  30. srand((double)microtime()*1000000);  
  31. $encrypt_key = md5(rand(0,32000));  
  32. $ctr=0;  
  33. $tmp = "";  
  34. for ($i=0;$i<strlen($txt);$i++)  
  35. {  
  36. if ($ctr==strlen($encrypt_key)) $ctr=0;  
  37. $tmp.= substr($encrypt_key,$ctr,1) .  
  38. (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));  
  39. $ctr++;  
  40. $r=base64_encode($this->keyED($tmp,$key)); 
  41. $r=str_replace('=',$this->rep_char,$r); 
  42. return $r;  
  43. //解密字符串 
  44. public function decrypt($txt,$key='')  
  45. $txt=str_replace($this->rep_char,'=',$txt); 
  46. $txt=base64_decode($txt); 
  47. if(!$key){ 
  48. $key=$this->enkey; 
  49. $txt = $this->keyED($txt,$key);  
  50. $tmp = "";  
  51. for ($i=0;$i<strlen($txt);$i++)  
  52. {  
  53. $md5 = substr($txt,$i,1);  
  54. $i++;  
  55. $tmp.= (substr($txt,$i,1) ^ $md5);  
  56. }  
  57. return $tmp;  

希望本文所述对大家的php程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表