今天就来讨论一下,怎么样的加密才安全。
免扩展加密之前2章我们简单说明了一下原理,方法。但简单的情况是可以直接破解的,在第二章时我们介绍了混淆的方法。也就是现在主流的加密方法,采用ASCII码:129-255之间的字符来加密,造成代码不可读。但这样的加密现在依然不能防止破解技术,聪明的加密作者想了好多的方法,这里简单文叙述一下。
源码-》加密处理(压缩,替换,BASE64,转义)-》安全处理(验证文件MD5值,限制IP、限域名、限时间、防破解、防命令行调试)-》加密程序成品,再简单的说:源码+加密外壳==加密程序。
加密处理无非是多次的压缩处理,转换加密我见过某变态程序对源码不集的加密转换,足足进行了50次操作。 要破解的人失去耐心。但这样的安全牺牲的性能太大了。因为我们主要说的是安全性,那就来说说娄全性的问题。
1、防止PHP命令行模式,因为我们IIS 或APACHE 都是工作在ISAPI或者CGI模式,是不会出现CLI .可以防止程序破解.
if (php_sapi_name() == "cli") { echo "请不要破解本程序"; exit; }
2、MD5的方式,此方式较复杂。一般会将一段加密后的代码,判断MD5值,写入到PHP中。程序运行的时间读取这一段MD5值,并判断。如果值不相同则停止运行。常见的加密文件,不可修改,修改即无法执行也是这个原因。
3、限IP地址,某一些程序在某一些IP 上是不可运行的。某网站提供破解服务,这个网站的ip地址为:42.121.57.XX,在程序中发现这个IP黑名单则直接拒绝执行。
4、判断脚本,某破解网站破解脚本文件名为,固定时可用此方法防止破解
$_SERVER['SCRIPT_NAME'] == '/xxxxxxxxx.php' 发现此文件名破解则退出.
简单总结,以上只是简单说明了一些加密的方法,但加密本身来说不是万能的,没有不被破解的加密程序。此类加密(2014年11月前各类免扩展加密)均存在一个致命的问题,加密外壳作的再牛B,一但被脱去了就得到一切源代码了。这也是所有加密程序可被破解,可被百分百还原的主要原因。2014年11月我们推出出新的加密算法,流程如下:
源码--》混淆源码(多种混淆方案可选择,有随机及算法不同方案)-》加密处理--》安全处理--》加密程序成品。
此类加密,比原来的程序多了一个混淆源码的操作,本网站全网首推出的功能,推出后已有多个加密同行跟进(我们算法最多,随机方式更强),即便是被破解了加密外壳,所得到的代码还是经过特别加密混淆处理过的,可以更好的提高系统的防破解能力及安全性。
最后,任何加密,混淆都是以牺牲系统性能为代价的,正所谓鱼与熊掌不可兼得!