虽说分享是传统的美德,但我们有时候辛辛苦苦写一些程序只是为了卖点小钱,挣点辛苦费,也防止有些没有道德的人倒卖,所以我们不得不对我们的程序进行加密,以下我们来介绍一下如何通过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);
打赏