本文实例讲述了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程序设计有所帮助。