OSDN Git Service

0811c468bd564039e64bb1e9aaf749c618e2a93f
[embrj/master.git] / lib / utility.php
1 <?php\r
2         function setEncryptCookie($key, $value, $time = 0, $path = '/') {\r
3                 if (trim(SECURE_KEY) == '') {\r
4                         setcookie($key, $value, $time, $path);\r
5                 } else {\r
6                         setcookie($key, encrypt($value), $time, $path);\r
7                 }\r
8         }\r
9 \r
10         function getEncryptCookie($key) {\r
11                 if ( isset($_COOKIE[$key]) ) {\r
12                         if (trim(SECURE_KEY) == '') {\r
13                                 return $_COOKIE[$key];\r
14                         } else {\r
15                                 return decrypt($_COOKIE[$key]);\r
16                         }\r
17                 } else { \r
18                         return null;\r
19                 }\r
20         }\r
21 \r
22         function getCookie($key) {\r
23                 if ( isset($_COOKIE[$key]) ) \r
24                         return $_COOKIE[$key];\r
25                 else \r
26                         return null;\r
27         }\r
28 \r
29         function delCookie($key) {\r
30                 setcookie($key, '', $_SERVER['REQUEST_TIME']-300, '/');\r
31         }\r
32 \r
33         function encrypt($plain_text) {\r
34                 if ( !function_exists('mcrypt_module_open') ) {\r
35                         return EDencrypt($plain_text, SECURE_KEY);\r
36                 }\r
37                 $td = mcrypt_module_open('blowfish', '', 'cfb', '');\r
38                 $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);\r
39                 mcrypt_generic_init($td, SECURE_KEY, $iv);\r
40                 $crypt_text = mcrypt_generic($td, $plain_text);\r
41                 mcrypt_generic_deinit($td);\r
42                 return base64_encode($iv.$crypt_text);\r
43         }\r
44 \r
45         function decrypt($crypt_text) {\r
46                 if ( !function_exists('mcrypt_module_open') ) {\r
47                         return EDdecrypt($plain_text, SECURE_KEY);\r
48                 }\r
49                 $crypt_text = base64_decode($crypt_text);\r
50                 $td = mcrypt_module_open('blowfish', '', 'cfb', '');\r
51                 $ivsize = mcrypt_enc_get_iv_size($td);\r
52                 $iv = substr($crypt_text, 0, $ivsize);\r
53                 $crypt_text = substr($crypt_text, $ivsize);\r
54                 mcrypt_generic_init($td, SECURE_KEY, $iv);\r
55                 $plain_text = mdecrypt_generic($td, $crypt_text);\r
56                 mcrypt_generic_deinit($td);\r
57 \r
58                 return $plain_text;\r
59         }\r
60 \r
61         if ( !function_exists('mb_strlen') ) {\r
62                 function mb_strlen($text, $encode) {\r
63                         if (strtolower($encode) == 'utf-8') {\r
64                                 return preg_match_all('%(?:\r
65                                         [\x09\x0A\x0D\x20-\x7E]     # ASCII\r
66                                         | [\xC2-\xDF][\x80-\xBF]# non-overlong 2-byte\r
67                                         |  \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs\r
68                                         | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte\r
69                                         |  \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates\r
70                                         |  \xF0[\x90-\xBF][\x80-\xBF]{2}    # planes 1-3\r
71                                         | [\xF1-\xF3][\x80-\xBF]{3}   # planes 4-15\r
72                                         |  \xF4[\x80-\x8F][\x80-\xBF]{2}    # plane 16\r
73                                 )%xs',$text,$out);\r
74                         }else{\r
75                                 return strlen($text);\r
76                         }\r
77                 }\r
78         }\r
79         \r
80         function keyED($txt,$encrypt_key) {\r
81 \r
82                 $encrypt_key = md5($encrypt_key);\r
83                 $ctr=0;\r
84                 $tmp = "";\r
85 \r
86                 for ($i=0;$i<strlen($txt);$i++) {\r
87                         if ($ctr==strlen($encrypt_key)) $ctr=0;\r
88                         $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);\r
89                         $ctr++;\r
90                 }\r
91 \r
92                 return $tmp;\r
93         }\r
94 \r
95         function EDencrypt($txt,$key) {\r
96 \r
97                 srand((double)microtime()*1000000);\r
98                 $encrypt_key = md5(rand(0,32000));\r
99                 $ctr=0;\r
100                 $tmp = "";\r
101 \r
102                 for ($i=0;$i<strlen($txt);$i++) {\r
103                         if ($ctr==strlen($encrypt_key)) $ctr=0;\r
104                         $tmp.= substr($encrypt_key,$ctr,1) . (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));\r
105                         $ctr++;\r
106                 }\r
107 \r
108                 return keyED($tmp,$key);\r
109         }\r
110 \r
111         function EDdecrypt($txt,$key) {\r
112 \r
113                 $txt = keyED($txt,$key);\r
114                 $tmp = "";\r
115 \r
116                 for ($i=0;$i<strlen($txt);$i++) {\r
117                         $md5 = substr($txt,$i,1);\r
118                         $i++;\r
119                         $tmp.= (substr($txt,$i,1) ^ $md5);\r
120                 }\r
121 \r
122                 return $tmp;\r
123 \r
124         }\r
125 ?>\r