php简单加密方法推荐一
2020-01-05 admin php 1679
加密的目的是保护源码,推荐这个方法的是:使用非常的简单,兼容性好,几乎所有代码都完美还原。缺点是过于简单,仅用于防止小白复制盗用源码。使用方法:将以下代码写入php文件中,运行该php文件后,将在目录下生成一个temp加密文件。代码如下:
function RandAbc($length = "") { // 返回随机字符串 $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; return str_shuffle($str); } $filename = 'functionhx.php'; //要加密的文件 $T_k1 = RandAbc(); //随机密匙1 $T_k2 = RandAbc(); //随机密匙2 $vstr = file_get_contents($filename); $v1 = base64_encode($vstr); $c = strtr($v1, $T_k1, $T_k2); //根据密匙替换对应字符。 $c = $T_k1.$T_k2.$c; $q1 = "O00O0O"; $q2 = "O0O000"; $q3 = "O0OO00"; $q4 = "OO0O00"; $q5 = "OO0000"; $q6 = "O00OO0"; $s = '$'.$q6.'=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$'.$q1.'=$'.$q6.'{3}.$'.$q6.'{6}.$'.$q6.'{33}.$'.$q6.'{30};$'.$q3.'=$'.$q6.'{33}.$'.$q6.'{10}.$'.$q6.'{24}.$'.$q6.'{10}.$'.$q6.'{24};$'.$q4.'=$'.$q3.'{0}.$'.$q6.'{18}.$'.$q6.'{3}.$'.$q3.'{0}.$'.$q3.'{1}.$'.$q6.'{24};$'.$q5.'=$'.$q6.'{7}.$'.$q6.'{13};$'.$q1.'.=$'.$q6.'{22}.$'.$q6.'{36}.$'.$q6.'{29}.$'.$q6.'{26}.$'.$q6.'{30}.$'.$q6.'{32}.$'.$q6.'{35}.$'.$q6.'{26}.$'.$q6.'{30};eval($'.$q1.'("'.base64_encode('$'.$q2.'="'.$c.'";eval(\'?>\'.$'.$q1.'($'.$q3.'($'.$q4.'($'.$q2.',$'.$q5.'*2),$'.$q4.'($'.$q2.',$'.$q5.',$'.$q5.'),$'.$q4.'($'.$q2.',0,$'.$q5.'))));').'"));'; //echo $s; $fpp1 = fopen('temp_'.$filename, 'w'); fwrite($fpp1, $s) or die('写文件错误'); fclose($fpp1);
为了提高效率,建议仅对核心函数代码进行加密,并在该代码前加上授权域名白名单,例如:
//远程获取白名单防复制 $url = 'https://blog.dzbfsj.com/baimingdan.php'; //获取不带端口号的域名前缀 $servername = trim($_SERVER['SERVER_NAME']); //获取服务端授权文件校验 $verifyurl = file_get_contents($url.'?domain='.$servername); if(empty($verifyurl)){ echo "源码未授权,请联系开发者微信或手机:13767725409"; exit; }
在服务端,写上以下代码,将允许使用的域名加在数组里即可:
//获取域名 $domain = $_GET['domain']; //授权域名列表 $Array = array('127.0.0.1','localhost','cf.dzbfsj.com'); //校验结果 echo in_array($domain, $Array) ? 'yes' : '';
这样,简单的源码防盗版功能就做好了。
当然,以下代码效果会更好:
function authorization($seed = '') { $encode = $_SERVER['SERVER_SOFTWARE'] . $_SERVER['SERVER_NAME'] . $_SERVER['DOCUMENT_ROOT'] . $_SERVER['SERVER_ADMIN'] . $_SERVER['SERVER_ADDR'] . PHP_VERSION . PHP_OS . __FILE__; return md5 ($encode); } $authorization_key = 'www.xiaoyi.com'; echo authorization($authorization_key); //这里是生成字符串验证 $authorization_check = array('dd670852938815f3892d3c511cc8fceb','ddc976cc02bce5c3c22c4d7d201c0cae' ); //授权字串,把生成的字符验证复制到这里来 if (!in_array(authorization ($authorization_key), $authorization_check)) { die('对不起,你的程序未经过小一授权!!'); }
加密的方式更加隐蔽,所以破解也更难了。