|
開(kāi)始之前,首先要澄清兩個(gè)問(wèn)題:第一,支持開(kāi)源,不等于反對(duì)代碼加密;第二,如果把不屬于自己的東西(比如公司的)拿去開(kāi)源,就更加不應(yīng)該了。
以前知道的,php代碼的加密都是用Zend的encoder,這東西不但是商業(yè)軟件,好像還暴出過(guò)能夠被破解的問(wèn)題,所以就找到了替代的方案────php_screw,一個(gè)日本人開(kāi)發(fā)的東東。
php_screw非常小巧,沒(méi)有仔細(xì)看過(guò)它的算法,但從說(shuō)明文檔中看,可以自行更改SEED,然后自行編譯so和可執(zhí)行檔。如果夠牛的話,甚至可以自己去更改算法。不管怎樣,對(duì)于我們這些“普通人”來(lái)說(shuō),這種加密應(yīng)該就夠了吧,如果真想滴水不漏,那還是不要公開(kāi)的好,雖然作者說(shuō)的并不是很容易就破解,但指不定哪兒有牛群呢不是么?
安裝的環(huán)境需要:php5.x,zlib開(kāi)啟,autoconf,automake已安裝。
測(cè)試環(huán)境:Ubuntu 8.04 hardy, php 5.2.3。
下載地址:http://sourceforge.NET/projects/php-screw/
1、 解壓,更改my_screw.h,里面的幾個(gè)數(shù)字就是SEED,相當(dāng)于密碼,可以隨意更改、增加,并且數(shù)字的多少不影響解密的速度。
2、編譯so文件:
復(fù)制代碼 代碼如下:
$ phpize
$ ./configure
$ make
如果出現(xiàn)這樣的錯(cuò)誤,那是因?yàn)閍utoconf沒(méi)有安裝:
復(fù)制代碼 代碼如下:
$ make
make: *** No targets specified and no makefile found. Stop.
3、安裝so文件,編譯好的文件在modules目錄下,將其拷貝到php extension存放的位置,比如/usr/lib/php5/20060613+lfs下,然后在php.ini中增加:
復(fù)制代碼 代碼如下:
extension = php_screw.so
4、編譯用來(lái)加密文件的可執(zhí)行文件:
復(fù)制代碼 代碼如下:
$ cd tools
$ make
tools目錄下新生成的screw就是了,放到$PATH中就可以調(diào)用了,比如要加密一個(gè)文件:
復(fù)制代碼 代碼如下:
$ screw a.php
Success Crypting(a.php)
加密后的a.php執(zhí)行正常,同時(shí)screw還會(huì)把原來(lái)沒(méi)有加密的文件改名為.screw文件作為備份。
Update @ 2008-09-01
加密之后,還有個(gè)小問(wèn)題,用require或include引用放在include_path下的加密代碼時(shí),會(huì)當(dāng)做明文引過(guò)來(lái),解決方法有兩種:
使用絕對(duì)路徑引用放在include_path下的加密內(nèi)容,如果是自己的主機(jī),肯定沒(méi)問(wèn)題的;
使用相對(duì)路徑來(lái)引用,比如在本項(xiàng)目的子目錄內(nèi),這樣也是沒(méi)問(wèn)題的。
php技術(shù):php_screw安裝使用教程(另一個(gè)PHP代碼加密實(shí)現(xiàn)),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。