听君一席话,胜读十年书,作为一个程序员,代码加密需要有,代码加密也不能没有。网站的安全,不在于程序,而在于站长,没有没有漏洞的程序,只有懒到极致的站长。
你是不是,还在使用PHP自带的base64_encode(加密)和base64_decode(解密)啊!可逆转的加密方式,还不如试试这些,没有加密秘钥,别人一辈子都解密不了的对称加密方式。废话少说,直接上案例。
案例一:OpenSSL加密(可逆转)
<?php error_reporting(0); //加密方法 function pre_encode($method) { $key = '123'; //加密密钥 $enc = openssl_encrypt($method, 'AES-256-CBC', $key, OPENSSL_RAW_DATA); return base64_encode($enc); } //解密方法 function pre_decode($enc) { $key = '123'; //解密密钥 $dec = openssl_decrypt(base64_decode($enc), 'AES-256-CBC', $key, OPENSSL_RAW_DATA); return $dec; } //示例用法 $method = '被加密的参数'; $enc = pre_encode($method); echo '加密后: '.$enc.'<br>'; $dec = pre_decode($enc); echo '解密后: '.$dec; ?>
加密的链接,加密的参数,没有秘钥,就很难破解,又不是黑客,哪里有那么多黑科技啊!
案例二:不知道叫啥加密(可逆转)
<?php error_reporting(0); //加密方法 function pre_encode($data, $key) { $key = md5('123');//加密密钥 $x = 0; $len = strlen($data); $l = strlen($key); for ($i = 0; $i < $len; $i++) { if ($x == $l) { $x = 0; } $char .= $key{$x}; $x++; } for ($i = 0; $i < $len; $i++) { $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256); } return base64_encode($str); } //解密方法 function pre_decode($data, $key) { $key = md5('123');//解密密钥 $x = 0; $data = base64_decode($data); $len = strlen($data); $l = strlen($key); for ($i = 0; $i < $len; $i++) { if ($x == $l) { $x = 0; } $char .= substr($key, $x, 1); $x++; } for ($i = 0; $i < $len; $i++) { if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) { $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1))); } else { $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1))); } } return $str; } //示例用法 $data = '被加密的参数';//被加密信息 $encrypt = pre_encode($data, $key);//加密结果 $decrypt = pre_decode($encrypt, $key);//解密结果 echo '加密结果:'.$encrypt.'<br>解密结果:'.$decrypt.''; ?>
网上还有很多版本,和上面的对称加密一样,我也不知道叫啥加密,没有秘钥就很难破解,不要老听别人说,对称加密不安全。我信你个鬼,这家伙坏的很,不希望别人用,别人用了以后,看得见解不了,能看能贴不能用,就想问你气不气,对有强迫症的人来说,心生忐忑,破解不了就不安全,加密的东西用得也不安心,你先把这个超级简单的加密方式破解再说。
案例三:PHP自带Base64函数(可逆转)
<?php error_reporting(0); echo base64_encode('是加密函数').'<br>';//加密 echo base64_decode('5piv5Yqg5a+G5Ye95pWw');//解密 ?>
PHP自带的Base64函数,base64_encode(是加密函数)和base64_decode(是解密函数)!没啥好说的,连封装都不需要。连变量都能加密,下面附上简单的例子。
小例子一:使用base64封装类
<?php error_reporting(0); //Base64加密 function base64encode($string) { $data = base64_encode($string); $data = str_replace(array('+', '/', '='), array('-', '_', ''), $data); return $data; } //Base64解密 function base64decode($string) { $data = str_replace(array('-', '_'), array('+', '/'), $string); $mod4 = strlen($data) % 4; if ($mod4) { $data.= substr('====', $mod4); } return base64_decode($data); } //要加密的变量、方法、字符串 //$config = '测试一下'; //加密方法 echo base64encode('$config = '测试一下';'); //解密方法 eval(base64decode('JGNvbmZpZyA9ICfmtYvor5XkuIDkuIsnOw')); echo $config; ?>
小例子二:使用自带函数加密
<?php error_reporting(0); // 加密代码 $Code = '$config = '测试一下';'; $encr = base64_encode(gzdeflate($Code)); // 解密代码 $deco = gzinflate(base64_decode($encr)); // 执行解密后的代码 eval($deco); echo $config; ?>
如你所见,使用base64加密和加密,都是可以直接解密的,复制就能解密了,毫无隐蔽性可言,而且eval函数就是木马的代名词,就是木马、后门、漏洞的意思,能够直接控制要执行的代码。
对称加密的缺陷
如你所见,对称加密,加密只能加密参数,不能加密变量、方法、函数等,总的来说,就是只能加密某个字符串,你想把某个字符串加密,就可以使用这种对称的加密方式,在A文件加密,在B文件也可以解密,只有加密秘钥对,任何地方均可解密,这些就是对称加密唯一的缺陷。
Base64加密的优势
和你想的一样,Base64加密与对称加密正好相反,Base64加密不仅仅只能加密字符串,还能加密变量、方法、函数等,总的来说,你把PHP文件里面的变量、方法、函数等全部都用Base64加密都行,这种加密可以解密,而且毫无技术含量,就像脱裤子放屁一样,还不如找个没人的地方出气。
当然,除了上面的加密解密方法,还有很多的PHP加密方法,找到适合自己的就是最佳的加密方法,上面的只是某个字段和字符串加密,要是你想整个PHP文件加密,那就得要使用PHP加密工具了。
在我们使用的程序中,无论是开源的,还是非开源的,都得要有点常识,代码技术是无罪的。当PHP版本需要安装SG11拓展的,你可以理解为,这个程序是全加密、半加密、半开源、非开源的程序。字面意思就是,可能存在木马、后门、漏洞等,安装使用需谨慎,网站上线会被按头,不要等到被按头了,才大喊冤枉啊,我啥都没做我不知道啊。
本文结束
评论专区
发表评论
评论列表(无评论)