本文实例讲述了PHP实现加强版加密解密类。分享给大家供大家参考。具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
<?php class Ender{ private $enkey ; //加密解密用的密钥 private $rep_char = '#' ; //替换加密后的base64字符串中的=,因为=在有些场合是禁止使用的, //这里可以用一个允许的字符作为替换。 //构造参数是密钥 public function __construct( $key = '' ){ if (! $key ){ $this ->enkey= $key ; } } //设置密钥http://blog.ddian.cn public function set_key( $key ){ $this ->enkey= $key ; } private function keyED( $txt , $encrypt_key ) { $encrypt_key = md5( $encrypt_key ); $ctr =0; $tmp = "" ; for ( $i =0; $i < strlen ( $txt ); $i ++) { if ( $ctr == strlen ( $encrypt_key )) $ctr =0; $tmp .= substr ( $txt , $i ,1) ^ substr ( $encrypt_key , $ctr ,1); $ctr ++; } return $tmp ; } //加密字符串 public function encrypt( $txt , $key = '' ) { if (! $key ){ $key = $this ->enkey; } srand((double)microtime()*1000000); $encrypt_key = md5(rand(0,32000)); $ctr =0; $tmp = "" ; for ( $i =0; $i < strlen ( $txt ); $i ++) { if ( $ctr == strlen ( $encrypt_key )) $ctr =0; $tmp .= substr ( $encrypt_key , $ctr ,1) . ( substr ( $txt , $i ,1) ^ substr ( $encrypt_key , $ctr ,1)); $ctr ++; } $r = base64_encode ( $this ->keyED( $tmp , $key )); $r = str_replace ( '=' , $this ->rep_char, $r ); return $r ; } //解密字符串 public function decrypt( $txt , $key = '' ) { $txt = str_replace ( $this ->rep_char, '=' , $txt ); $txt = base64_decode ( $txt ); if (! $key ){ $key = $this ->enkey; } $txt = $this ->keyED( $txt , $key ); $tmp = "" ; for ( $i =0; $i < strlen ( $txt ); $i ++) { $md5 = substr ( $txt , $i ,1); $i ++; $tmp .= ( substr ( $txt , $i ,1) ^ $md5 ); } return $tmp ; } } |
希望本文所述对大家的php程序设计有所帮助。