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

这篇文章主要介绍了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. }
  12. }
  13. //设置密钥http://blog.ddian.cn
  14. public function set_key($key){
  15. $this->enkey=$key;
  16. }
  17. private function keyED($txt,$encrypt_key)
  18. {
  19. $encrypt_key = md5($encrypt_key);
  20. $ctr=0;
  21. $tmp = "";
  22. for ($i=0;$i<strlen($txt);$i++)
  23. {
  24. if ($ctr==strlen($encrypt_key)) $ctr=0;
  25. $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
  26. $ctr++;
  27. }
  28. return $tmp;
  29. }
  30. //加密字符串
  31. public function encrypt($txt,$key='')
  32. {
  33. if(!$key){
  34. $key=$this->enkey;
  35. }
  36. srand((double)microtime()*1000000);
  37. $encrypt_key = md5(rand(0,32000));
  38. $ctr=0;
  39. $tmp = "";
  40. for ($i=0;$i<strlen($txt);$i++)
  41. {
  42. if ($ctr==strlen($encrypt_key)) $ctr=0;
  43. $tmp.= substr($encrypt_key,$ctr,1) .
  44. (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
  45. $ctr++;
  46. }
  47. $r=base64_encode($this->keyED($tmp,$key));
  48. $r=str_replace('=',$this->rep_char,$r);
  49. return $r;
  50. }
  51. //解密字符串
  52. public function decrypt($txt,$key='')
  53. {
  54. $txt=str_replace($this->rep_char,'=',$txt);
  55. $txt=base64_decode($txt);
  56. if(!$key){
  57. $key=$this->enkey;
  58. }
  59. $txt = $this->keyED($txt,$key);
  60. $tmp = "";
  61. for ($i=0;$i<strlen($txt);$i++)
  62. {
  63. $md5 = substr($txt,$i,1);
  64. $i++;
  65. $tmp.= (substr($txt,$i,1) ^ $md5);
  66. }
  67. return $tmp;
  68. }
  69. }

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