博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php源码安全加密之PHP混淆算法.
阅读量:6500 次
发布时间:2019-06-24

本文共 998 字,大约阅读时间需要 3 分钟。

php源码安全加密的前世今生,本想发在教程区中.不知道怎么发,就写在这里面吧.

PHP加密,解密是一直的话题,本人菜鸟,今天就简单向大家介绍一下并说说其中原理.提供一些加密的混淆算法.
一\PHP的加密总体上来说分以下2种:
1\扩展组件类加密,代表有:zend\ionCube\SG\php_screw\bcompiler\BZ2等.
2\免扩展加密:php某盾等为代表的一批.
二\他们的安全性?
组件类加密:对于扩展加密,ZEND类为代表的是先编译成opcode再压缩执行.理论上没办法得到源代码.现在有一些ZEND破解,是通过OPCODE逆向转回PHP原代码,好的逆向效果在98%以上.不可能百分百,而php_screw等为代表的加密组件,是对源代码进地xor加密,DES加密等等. 在运行时要先解密,这样的代码是可以百分百被破解的.
免组件类加密:PHP某盾们,这一些都是在原有PHP代码上面增加一个外壳,类似于NET程序的加壳方法.执行时先通过壳来完成对原始代码的base64 eval 解压缩等操作.最终通过Eval执行. 最致命此类代码可被劫持eval百分百还原.
三\什么样的加密才安全?
不加密才最安全.呵...这个没说一样.不过有一个想法,可以增加解密的难度.简要流程如下:
加密过程:PHP源代码->PHP代码混淆器->加密(免组件外壳或组件加密)->加密成品源码.
执行过程:加载程序(免组件外壳或组件加密)->PHP混淆代码->执行代码.
通过上面流程,我们可以看到因为PHP代码进行了混淆处理,所以被得到的代码是乱的.这样的代码还是可以执行,但会给阅读者造成不易读的情况.另外,加载的程序即外壳的安全性至关重要.好的外壳,才是保护程序的关键.
对一源代码的混淆,可以操作的混淆内容有:PHP变量\PHP用户函数\PHP系统函数\PHP类名\PHP字符串,均可以完成加密.有人说过,这样混淆效果也不好啊,如何更变态?PHP支持变量名是ASCII码的127-255,而这一些字符在编辑器中看全是汉字乱码. 这样就可以增加难度性.
四\加密要付出,执行要代价!
如果只是简单的加密函数名\变量名还好,如果对字符串进行了加密保护.在进行每一次字符串操作时均需要执行一次解密操作.会消耗时间,影响系统执行的性能.到使用哪一种加密您值得考虑.
本人网址: 欢迎交流,有砖的轻拍.

转载地址:http://cqvyo.baihongyu.com/

你可能感兴趣的文章
提交失败_金三提交又失败?小易给你支支招
查看>>
小米笔记本air无法充电_30W、45W、65W PD充电器对小米笔记本Air 13.3英寸0~100%充电测试...
查看>>
fidde调试手机_使用Fiddler抓包和调试移动web页面
查看>>
python 解析模块脚本_Python argparse模块应用实例解析
查看>>
大学生免费查题公众号_大学生免费查题公众号?搜题免费公众号?
查看>>
angular单选按钮_AngularJS单选按钮实例
查看>>
stm32实验报告心得体会_STM32实验报告
查看>>
单片机中XPL指令是什么_8051单片机的指令系统有什么特点
查看>>
datatable.load 是post请求吗_Python接口自动化之requests请求封装
查看>>
wdcp mysql版本_升级WDCP的PHP及MYSQL版本
查看>>
mac mysql打不开闪一下_mysql command line client打不开(闪一下消失)的解决办法
查看>>
mysql执行sql文件创建数据库_mysql执行sql文件创建数据库
查看>>
mysql横向合并两个表_mysql 查询两张表 横向合并实现类似full join
查看>>
jsp mysql登录注册视频_Jsp+servlet+Mysql实现注册登录
查看>>
hikariconfig mysql_HikariConfig配置解析
查看>>
mysql批量数据多次查询数据库_mysql数据库批量操作
查看>>
springboot mysql连接超时_SpringBoot连接数据库超时
查看>>
python高并发访问mysql_Python访问MySQL
查看>>
实体自动生成增删改查方法_基于Dapper的开源Lambda扩展,支持分库分表自动生成实体之基础介绍...
查看>>
asp mysql主机_mysql仿asp的数据库操作类
查看>>