杭州网帮你
PHP给源代码加密的三种方法
时间:2018-05-05 14:04:37 浏览:178

虽说分享是传统的美德,但我们有时候辛辛苦苦写一些程序只是为了卖点小钱,挣点辛苦费,也防止有些没有道德的人倒卖,所以我们不得不对我们的程序进行加密,以下我们来介绍一下如何通过PHP的自定义函数来加密我们的PHP源代码

1 方法一:
2 <?php  
3 function encode_file_contents($filename) {  
4     $type=strtolower(substr(strrchr($filename,'.'),1));  
5     if ('php' == $type && is_file($filename) && is_writable($filename)) { // 如果是PHP文件 并且可写 则进行压缩编码  
6         $contents = file_get_contents($filename); // 判断文件是否已经被编码处理  
7         $contents = php_strip_whitespace($filename);  
8
9         // 去除PHP头部和尾部标识  
10         $headerPos = strpos($contents,'<?php');  
11         $footerPos = strrpos($contents,'?>');  
12         $contents = substr($contents, $headerPos + 5, $footerPos - $headerPos);  
13         $encode = base64_encode(gzdeflate($contents)); // 开始编码  
14         $encode = '<?php'."\n eva l(gzinflate(base64_decode("."'".$encode."'".")));\n\n?>";  
15
16         return file_put_contents($filename, $encode);  
17     }  
18     return false;  
19 }  
20
21 //调用函数  
22 $filename = 'dam.php';  
23 encode_file_contents($filename);  
24 echo "OK,加密完成!"
25 ?>
26
27
28
29 加密方法二:
30 <?php  
31
32 function RandAbc($length = "") { // 返回随机字符串  
33     $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";  
34     return str_shuffle($str);  
35 }  
36
37 $filename = 'index.php'; //要加密的文件  
38 $T_k1 = RandAbc(); //随机密匙1  
39 $T_k2 = RandAbc(); //随机密匙2  
40 $vstr = file_get_contents($filename);  
41 $v1 = base64_encode($vstr);  
42 $c = strtr($v1, $T_k1, $T_k2); //根据密匙替换对应字符。  
43 $c = $T_k1.$T_k2.$c;  
44 $q1 = "O00O0O";  
45 $q2 = "O0O000";  
46 $q3 = "O0OO00";  
47 $q4 = "OO0O00";  
48 $q5 = "OO0000";  
49 $q6 = "O00OO0";  
50 $s = '
51
52 $s = '<?php '."\n".$s."\n".' ?>';  
53 //echo $s;  
54 // 生成 加密后的PHP文件  
55 $fpp1 = fopen('temp_'.$filename, 'w');  
56 fwrite($fpp1, $s) or die('写文件错误');  
57
58 ?>
59
60
61 加密方法三:
62 <?php  
63
64 class text_auth  
65 {  
66     var $n_iter;  
67
68     function text_auth()  
69     {  
70         $this->setIter(32);  
71     }  
72
73     function setIter($n_iter)  
74     {  
75         $this->n_iter = $n_iter;  
76     }  
77
78     function getIter()  
79     {  
80         return $this->n_iter;  
81     }  
82
83     function encrypt($data, $key)  
84     {  
85         $n = $this->_resize($data, 4);  
86
87         $data_long[0]   = $n;  
88         $n_data_long    = $this->_str2long(1, $data, $data_long);  
89
90         $n = count($data_long);  
91         if (($n & 1) == 1) {  
92             $data_long[$n] = chr(0);  
93             $n_data_long++;  
94         }  
95
96         $this->_resize($key, 16, true);  
97         if ( '' == $key )  
98             $key = '0000000000000000';  
99
100         $n_key_long = $this->_str2long(0, $key, $key_long);  
101
102         $enc_data   = '';  
103         $w          = array(0, 0);  
104         $j          = 0;  
105         $k          = array(0, 0, 0, 0);  
106         for ($i = 0; $i < $n_data_long; ++$i) {  
107             if ($j + 4 <= $n_key_long) {  
108                 $k[0] = $key_long[$j];  
109                 $k[1] = $key_long[$j + 1];  
110                 $k[2] = $key_long[$j + 2];  
111                 $k[3] = $key_long[$j + 3];  
112             } else {  
113                 $k[0] = $key_long[$j % $n_key_long];  
114                 $k[1] = $key_long[($j + 1) % $n_key_long];  
115                 $k[2] = $key_long[($j + 2) % $n_key_long];  
116                 $k[3] = $key_long[($j + 3) % $n_key_long];  
117             }  
118             $j = ($j + 4) % $n_key_long;  
119
120             $this->_encipherLong($data_long[$i], $data_long[++$i], $w, $k);  
121
122             $enc_data .= $this->_long2str($w[0]);  
123             $enc_data .= $this->_long2str($w[1]);  
124         }  
125
126         return $enc_data;  
127     }  
128
129     function decrypt($enc_data, $key)  
130     {  
131         $n_enc_data_long = $this->_str2long(0, $enc_data, $enc_data_long);  
132
133         $this->_resize($key, 16, true);  


打赏


[上一篇]Mysql定义字段类型text,longtext,
[下一篇]thinkphp 5 在phpstudy nginx 环
Copyright 2022 © 93580.com.cn 网帮你

2022 © 版权所有 红花岗区网帮你信息技术工作室

工信部备案号:黔ICP备2024036985号-2

请使用网帮你微信扫码登录