php源码安全加密之PHP混淆算法.
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://www.phpjiami.com 欢迎交流,有砖的轻拍.
php源码安全加密之PHP混淆算法.的更多相关文章
- 看Lucene源码必须知道的基本规则和算法
上中学的时候写作文,最喜欢的季节我都是写冬天.虽然是因为写冬天的人比较少,那时确实也是对其他季节没有什么特殊的偏好,反而一到冬天,自己皮肤会变得特别白.但是冬天啊,看到的只有四季常青盆栽:瓜栗(就是发 ...
- 【源码解析】Sharding-Jdbc中的算法
Sharding-jdbc中的很多地方涉及到算法,比如主从配置这块.分库分表这块.本文主要从源码角度介绍下,目前主要包含哪些算法,以及这些算法的内容. 一.读写分离(主从配置) 这块的代码主要在cor ...
- Java项目源码为什么要做代码混淆(解释的很好)
代码混淆,是将计算机程序的代码转换成一种功能上等价,但是难于阅读和理解的形式的行为.代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码.执行代码混淆的程序被称作代码混淆器.目前已经存在许多种 ...
- PHP源码进行加密(仅linux)
加密软件(php_screw) 1.下载网站:http://sourceforge.net/projects/php-screw/ 2.描述: php文件通常以文本格式存贮在服务器端, 很容易被别人读 ...
- Layman 对PHP源码进行加密保护
加密软件(php_screw) >下载网站:http://sourceforge.net/projects/php-screw/ >描述:php文件通常以文本格式存贮在服务器端, 很容易被 ...
- lucene源码分析(4)Similarity相似度算法
lucene 7.5.0默认的评分Similarity是BM25Similarity (IndexSearcher.java) // the default Similarity private st ...
- [图解tensorflow源码] [转载] tensorflow设备内存分配算法解析 (BFC算法)
转载自 http://weibo.com/p/1001603980563068394770 @ICT_吴林阳 tensorflow设备内存管理模块实现了一个best-fit with coales ...
- 基于深度学习的恶意样本行为检测(含源码) ----采用CNN深度学习算法对Cuckoo沙箱的动态行为日志进行检测和分类
from:http://www.freebuf.com/articles/system/182566.html 0×01 前言 目前的恶意样本检测方法可以分为两大类:静态检测和动态检测.静态检测是指并 ...
- 关于HTML、js加密、混淆、源码保护、代码安全,防止解压直接看源码
一直有人问HTML加密混淆怎么做,其实这在业内是早已很多人研究过的课题.假日期间整理一篇文章分享给大家. 我们先理下需求,加密的目的是什么?加密到什么级别?为此我们可以牺牲什么?我们知道这个世界不存在 ...
随机推荐
- JavaScript学习笔记——对象基础
javascript对象基础 一.名词解释: 1.基于对象 一切皆对象,以对象的概念来编程. 2.面向对象编程(oop Object oriented programming) A.对象 就是人们要研 ...
- C# 6.0可能的新特性
C# 6.0可能的新特性 1.主构造函数(Primary Constructors) 主构造函数给类中的变量赋值 Before public class Point { private int x, ...
- OC-protocol
一.简单使用 1. 基本用途 可以用来声明一大堆方法(不能声明成员变量) 只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明 只要父类遵守了某个协议,就相当于子类也遵守了 2. 格式 协议 ...
- Yii2 如何更好的在页面注入JavaScript
先添加一个widgets <?php /** * User: yiqing * Date: 14-9-15 * Time: 下午12:09 */ namespace common\widgets ...
- svn branch and merge(svn切换分支和合并)详解
下文的实践主要是参考了TortoiseSVN的帮助文档和Subversion的在线文档,Subversion的在线文档:http://svnbook.red-bean.com/en/1.5/svn-b ...
- Eclipse 安装插件后不显示的解决办法
有时候一些 eclipse 插件安装之后,打开 eclipse 死活都不显示,这时候可以: ① 把 eclipse/configuration/org.eclipse.update 删除掉.出现这种情 ...
- 深入理解JS的delete
原文链接: Understanding delete原文作者: Kangax原文日期: 2010年01月10日 翻译日期: 2014年02月07日 翻译人员: 铁锚 !!!!!!!!草稿版本的翻译完成 ...
- 怎样让Oracle支持中文? 语言_地域.字符集
暂时不涉及数据库业务,但是今天入库的时候中文入库报错,考虑可能是字体不支持,留待备用. 来源:Linux社区 作者:robertkun 语言_地域.字符集SIMPLIFIED CHINESE_CHI ...
- 如何让图片在垂直方向与 div的底部对齐 水平居中
需要图片的绝对定位postion: absolute. 一般定位时, 是用div去定位. 一般不直接用 非div去"绝对/相对"定位. 如不直接用 等去定位. 因为这些好像不好定位 ...
- Android 环境配置
一.开发环境配置 1.使用 eclipse 需要下载安装 Android SDK.Eclipse.ADT 插件. 也可以直接下载整合好的 ADT Bundle 包,下载地址: http://devel ...