见一个公司的系统(他们是成熟的oa系统),发现他们的源代码都是加了密的,这样的情况是如何加密,并在服务器如何解密执行php的?

2011-02-02 07:41:57

3 Answers

要保护你的php源码码方法有很多,最常用的就是安装zend了,如果出于某种原因你没有条件在服务器上安装东西,也可以不妨试试其它方法。那就是对你的php源代码进行乱数处理,即将函数名,变量名变为$00000OO0o0O0O0Oac这样,并删除换行符,这样即使人家拿到你的源代码也很难阅读,java的核心代码就是采用这种方式加密的。
推荐几个工具:
PHP Obfuscator
POBS
SourceCop

2011-02-02 09:47:32

PHP源代码加密目前一般有以下几种方式:

1、去掉一切空格、换行和注释,这样就降低了程序的可读性了。甚至还可以将程序中的变量都简化了,例如:$title变成$i11iii1i1i1i或者$o000o0o0等,基本上这样的程序就无法读了。

2、使用第三方扩展,例如C语言等通过使用ECB或者DES模式把代码编译成二进制字节码进行混淆,DeZend就是采用这种方式。

3、可以使用PHP本身的base64_enecode()进行编码,采用反复多次混淆代码、多次使用base64等算法混淆代码,最后使用EVAL函数输出的方式。

4、通过利用 base64和gzinflate对PHP代码进行压缩,可以一定程度上保护您的代码版权和减小代码的体积。

2011-02-02 11:32:35
下载php_screw-1.3 ([http://prdownloads.sourceforge.net/php-screw/php_screw-1.3.tgz?download)][1] 安装 1.将获得的php_screw-1.3.tgz文件放到/usr/local目录下,然后用tar解压缩 tar zxvf php_screw-1.3.tgz 2.进入/usr/local/php_screw-1.3目录开始安装 cd /usr/local/php_screw-1.3phpize./confiugre 3.设置自己用来加密的密码 vi my_screw.h -- Please change the encryption SEED key (pm9screw_mycryptkey) into the values according to what you like. The encryption will be harder to break, if you add more values to the encryption SEED array. However, the size of the SEED is unrelated to the time of the decrypt processing. * If you can read and understand the source code, to modify an original encryption logic will be possible. But in general, this should not be necessary. OPTIONAL: Encrypted scripts get a stamp added to the beginning of the file. If you like, you may change this stamp defined by PM9SCREW and PM9SCREW_LEN in php_screw.h. PM9SCREW_LEN must be less than or equal to the size of PM9SCREW. 4.编译 make 5.拷贝modules目录下的php_screw.so文件到/usr/lib/php/extension目录下 cp modules/php_screw.so /usr/lib/php/extension/ 6.编辑php.ini文件 在php.ini文件里,加入如下语句 extension=php_screw.so 7.重新启动Apache /etc/rc.d/rc.httpd restart 8.编译加密工具 cd toolsmake 9.将tools目录下加密用的工具screw拷贝到适当目录 cp screw /usr/bin/ 经过以上的10步,就已经把php_screw-1.3全部安装完成了。并且现在的php也已经支持解释加密过的php文件了 使用 1.现写一个要加密的php文件。 我写了如下的一个用来测试php速度的compute.php文件 <?$a=0;$t=time();for($i=0;$i<5000000;$i++) {$a=$a*$i;}$t1=time();echo "<p>";echo "It used:";echo $t1-$t;echo "seconds";?> 将上面的compute.php文件放到/var/www/htdocs目录下。通过浏览器访问,将显示出php在大量计算时的速度(只能粗略估计一下) 2.将我们写的php文件加密 cd /var/www/htdocs/screw compute.php 我们加密后,现在目录下的compute.php文件就是我们已经加密的了。而源文件被改名为compute.php.screw存放了。 我们现在再测试一下compute.php,看看能否正常使用?速度如何? 我比较了一下,加密前后的速度大概一样,基本没有太多的损失。

来自:http://www.cngr.cn/article/54/66/2006/2006071936032.shtml

2011-02-02 13:09:25
您不能回答该问题或者回答已经关闭!

相关文章推荐

  • C#中using指令的几种用法

    using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到

  • C#实例解析适配器设计模式

    将一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作

  • C#开发高性能Log Help类设计开发

    项目中要在操作数据库的异常处理中加入写Log日志,对于商业上有要求,写log时对其它操作尽可能影响小,不能因为加入log导致耗时太多

  • Async和Await使异步编程更简单

    C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作

  • C#开发中的反射机制

    反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等

  • C#运行时相互关系

    C#运行时相互关系,包括运行时类型、对象、线程栈和托管堆之间的相互关系,静态方法、实例方法和虚方法的区别等等

  • 使用托管C++粘合C#和C++代码(二)

    本文实现一下C++代码调用C#代码的过程。我构造一个简单并且直观的例子:通过C++ UI 触发C# UI.

  • C#协变和逆变

    “协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型,“逆变”则是指能够使用派生程度更小的类型

  • C#基础概念之延迟加载

    延迟加载(lazy load)是Hibernate3关联关系对象默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作

  • C#中的索引器的简单理解和用法

    C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作

  • 使用托管C++粘合C#和C++代码(一)

    C#在xml读写,数据库操纵,界面构造等很多方面性能卓越;C++的效率高,是底层开发的必备武器

  • 深入C# 序列化(Serialize)、反序列化(Deserialize)

    C#中的序列化和反序列化,序列化是.NET运行时环境用来支持用户定义类型的流化的机制