Crypt.class.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2009 http://thinkphp.cn All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  8. // +----------------------------------------------------------------------
  9. // | Author: liu21st <liu21st@gmail.com>
  10. // +----------------------------------------------------------------------
  11. /**
  12. * Crypt 加密实现类
  13. * @category ORG
  14. * @package ORG
  15. * @subpackage Crypt
  16. * @author liu21st <liu21st@gmail.com>
  17. */
  18. class Crypt {
  19. /**
  20. * 加密字符串
  21. * @access static
  22. * @param string $str 字符串
  23. * @param string $key 加密key
  24. * @return string
  25. */
  26. function encrypt($str,$key,$toBase64=false){
  27. $r = md5($key);
  28. $c=0;
  29. $v = "";
  30. $len = strlen($str);
  31. $l = strlen($r);
  32. for ($i=0;$i<$len;$i++){
  33. if ($c== $l) $c=0;
  34. $v.= substr($r,$c,1) .
  35. (substr($str,$i,1) ^ substr($r,$c,1));
  36. $c++;
  37. }
  38. if($toBase64) {
  39. return base64_encode(self::ed($v,$key));
  40. }else {
  41. return self::ed($v,$key);
  42. }
  43. }
  44. /**
  45. * 解密字符串
  46. * @access static
  47. * @param string $str 字符串
  48. * @param string $key 加密key
  49. * @return string
  50. */
  51. function decrypt($str,$key,$toBase64=false) {
  52. if($toBase64) {
  53. $str = self::ed(base64_decode($str),$key);
  54. }else {
  55. $str = self::ed($str,$key);
  56. }
  57. $v = "";
  58. $len = strlen($str);
  59. for ($i=0;$i<$len;$i++){
  60. $md5 = substr($str,$i,1);
  61. $i++;
  62. $v.= (substr($str,$i,1) ^ $md5);
  63. }
  64. return $v;
  65. }
  66. function ed($str,$key) {
  67. $r = md5($key);
  68. $c=0;
  69. $v = "";
  70. $len = strlen($str);
  71. $l = strlen($r);
  72. for ($i=0;$i<$len;$i++) {
  73. if ($c==$l) $c=0;
  74. $v.= substr($str,$i,1) ^ substr($r,$c,1);
  75. $c++;
  76. }
  77. return $v;
  78. }
  79. }