解析如何用php screw加密php源代码


Posted in PHP onJune 20, 2013

在使用PHP过程中发现,自己编写的php代码因为都是源代码方式放在服务器上的所以很容易就被别人拿走随便修改(变成自己开发的)使用了。
为了保住自己的劳动成果,我一直寻找一种可以加密php代码的软件。
最著名的就是Zend公司的Zendencoder了,但是不是开源软件(要价很高,也没有找到破解版)。
既然收费的用不起,我们就用开源的。我找到了php_screw这个开源软件,目前最新版本是1.5
安装环境
系统:centos 5.3
软件:Apache 2.2.9
PHP 5.2.10
以上环境全部是自己下载配置安装的。具体的Apache+php+mysql安装方法请从网上搜索。
安装
1.用tar解压缩 tar -zxvf php_screw-1.5.tar.gz
2.进入php_screw-1.5目录开始安装
cd php_screw-1.5
phpize
关于phpize ,它在php5-dev扩展模块中 只要安装php5-dev模块就行了。
./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/php5/extension目录下
cp modules/php_screw.so /usr/lib/php5/extension/
6.编辑php.ini文件
在php.ini文件里,加入如下语句
extension=php_screw.so
7.重新启动Apache
/srv/apache/bin/apachectl restart
8.编译加密工具
cd tools
make
9.将tools目录下加密用的工具screw拷贝到适当目录
cp screw /usr/bin/
经过以上的10步,就已经把php_screw-1.5全部安装完成了。并且现在的php也已经支持解释加密过的php文件了
使用
1.现写一个要加密的php文件。
我写了如下的一个用来测试php速度的test.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";
?>

将上面的test.php文件放到/var/www/目录下。通过浏览器访问,将显示出php在大量计算时的速度(粗略估计)
2.将我们写的php文件加密
cd /var/www/
screw test.php
我们加密后,现在目录下的test.php文件就是我们已经加密的了。而源文件被改名为test.php.screw存放了。
我们现在再测试一下test.php,看看能否正常使用?速度如何?
我比较了一下,加密前后的速度大概一样,基本没有太多的损失。
3.批处理加密文件
在debian, apache2, php5上测试过对.html文件加密后,能正确解析;
php_screw如何对当前目录下,对目录下包含的文件,以及包含目录下的文件进行整体加密
find ./ -name "*.php"-print|xargs -n1 screw //加密所有的.php文件
find ./ -name "*.screw" -print/xargs -n1 rm //删除所有的.php源文件的备份文件
这样在当前目录下的所有.php文件就全部背加密了
PHP 相关文章推荐
一个用php实现的获取URL信息的类
Jan 02 PHP
PHP array操作10个小技巧分享
Jun 23 PHP
PHP APC配置文件2套和参数详解
Jun 11 PHP
2个比较经典的PHP加密解密函数分享
Jul 01 PHP
PHP之uniqid()函数用法
Nov 03 PHP
php安装swoole扩展的方法
Mar 19 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
Aug 18 PHP
php实现生成验证码实例分享
Apr 10 PHP
php5对象复制、clone、浅复制与深复制实例详解
Aug 14 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 PHP
PHP实现创建以太坊钱包转账等功能
Apr 21 PHP
php_screw 1.5:php加密: 安装与使用详解
Jun 20 #PHP
php连接Access数据库错误及解决方法
Jun 20 #PHP
PHP连接Access数据库的方法小结
Jun 20 #PHP
如何使用php判断所处服务器操作系统的类型
Jun 20 #PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 #PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 #PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
Jun 20 #PHP
You might like
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
2017/10/22 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
js判断当前浏览器类型,判断IE浏览器方法
2014/06/02 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法
2020/05/14 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python 布尔操作实现代码
2013/03/23 Python
python使用插值法画出平滑曲线
2018/12/15 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
利用python绘制正态分布曲线
2021/01/04 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
陈欧广告词
2014/03/14 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
2015年度护士个人工作总结
2015/04/09 职场文书