PHP的加密解密字符串函数

程序中经常使用的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
/*********************************************************************
     函数名称:encrypt
     函数作用:加密解密字符串
     使用方法:
     加密     :encrypt('str','E','nowamagic');
     解密     :encrypt('被加密过的字符串','D','nowamagic');
     参数说明:
     $string   :需要加密解密的字符串
     $operation:判断是加密还是解密:E:加密   D:解密
     $key      :加密的钥匙(密匙);
     *********************************************************************/
     function encrypt( $string , $operation , $key = '' )
     {
         $key =md5( $key );
         $key_length = strlen ( $key );
         $string = $operation == 'D' ? base64_decode ( $string ): substr (md5( $string . $key ),0,8). $string ;
         $string_length = strlen ( $string );
         $rndkey = $box = array ();
         $result = '' ;
         for ( $i =0; $i <=255; $i ++)
         {
             $rndkey [ $i ]=ord( $key [ $i % $key_length ]);
             $box [ $i ]= $i ;
         }
         for ( $j = $i =0; $i <256; $i ++)
         {
             $j =( $j + $box [ $i ]+ $rndkey [ $i ])%256;
             $tmp = $box [ $i ];
             $box [ $i ]= $box [ $j ];
             $box [ $j ]= $tmp ;
         }
         for ( $a = $j = $i =0; $i < $string_length ; $i ++)
         {
             $a =( $a +1)%256;
             $j =( $j + $box [ $a ])%256;
             $tmp = $box [ $a ];
             $box [ $a ]= $box [ $j ];
             $box [ $j ]= $tmp ;
             $result .= chr (ord( $string [ $i ])^( $box [( $box [ $a ]+ $box [ $j ])%256]));
         }
         if ( $operation == 'D' )
         {
             if ( substr ( $result ,0,8)== substr (md5( substr ( $result ,8). $key ),0,8))
             {
                 return substr ( $result ,8);
             }
             else
             {
                 return '' ;
             }
         }
         else
         {
             return str_replace ( '=' , '' , base64_encode ( $result ));
         }
     }
使用方法
?
1
2
3
4
5
6
7
8
$id = 132;
     
$token = encrypt( $id 'E' 'a' );
     
echo '加密:' .encrypt( $id 'E' 'a' );
echo '<br />' ;
     
echo '解密:' .encrypt( $token 'D' 'a' );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值