本文目錄一覽:
- 1、PHP中給源代碼加密的幾種方法
- 2、分享一個php加密方法,這個方法還比較實用
- 3、PHP項目給客戶的源代碼怎麼加密?不希望別人做改版盜用二次開發之類的
- 4、php源代碼被加密了,請問如何解密?
- 5、如何對PHP文件進行加密
- 6、怎樣給PHP源代碼加密
PHP中給源代碼加密的幾種方法
?php
function encode_file_contents($filename) {
$type=strtolower(substr(strrchr($filename,’.’),1));
if (‘php’ == $type is_file($filename) is_writable($filename)) { // 如果是PHP文件 並且可寫 則進行壓縮編碼
$contents = file_get_contents($filename); // 判斷文件是否已經被編碼處理
$contents = php_strip_whitespace($filename);
// 去除PHP頭部和尾部標識
$headerPos = strpos($contents,’?php’);
$footerPos = strrpos($contents,’?’);
$contents = substr($contents, $headerPos + 5, $footerPos – $headerPos);
$encode = base64_encode(gzdeflate($contents)); // 開始編碼
$encode = ‘?php’.”\n eval(gzinflate(base64_decode(“.”‘”.$encode.”‘”.”)));\n\n?”;
return file_put_contents($filename, $encode);
}
return false;
}
//調用函數
$filename = ‘dam.php’;
encode_file_contents($filename);
echo “OK,加密完成!”
?
?php
function RandAbc($length = “”) { // 返回隨機字符串
$str = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”;
return str_shuffle($str);
}
$filename = ‘index.php’; //要加密的文件
$T_k1 = RandAbc(); //隨機密匙1
$T_k2 = RandAbc(); //隨機密匙2
$vstr = file_get_contents($filename);
$v1 = base64_encode($vstr);
$c = strtr($v1, $T_k1, $T_k2); //根據密匙替換對應字符。
$c = $T_k1.$T_k2.$c;
$q1 = “O00O0O”;
$q2 = “O0O000”;
$q3 = “O0OO00”;
$q4 = “OO0O00”;
$q5 = “OO0000”;
$q6 = “O00OO0”;
$s = ‘$’.$q6.’=urldecode(“%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A”);$’.$q1.’=$’.$q6.'{3}.$’.$q6.'{6}.$’.$q6.'{33}.$’.$q6.'{30};$’.$q3.’=$’.$q6.'{33}.$’.$q6.'{10}.$’.$q6.'{24}.$’.$q6.'{10}.$’.$q6.'{24};$’.$q4.’=$’.$q3.'{0}.$’.$q6.'{18}.$’.$q6.'{3}.$’.$q3.'{0}.$’.$q3.'{1}.$’.$q6.'{24};$’.$q5.’=$’.$q6.'{7}.$’.$q6.'{13};$’.$q1.’.=$’.$q6.'{22}.$’.$q6.'{36}.$’.$q6.'{29}.$’.$q6.'{26}.$’.$q6.'{30}.$’.$q6.'{32}.$’.$q6.'{35}.$’.$q6.'{26}.$’.$q6.'{30};eval($’.$q1.'(“‘.base64_encode(‘$’.$q2.’=”‘.$c.'”;eval(\’?\’.$’.$q1.'($’.$q3.'($’.$q4.'($’.$q2.’,$’.$q5.’*2),$’.$q4.'($’.$q2.’,$’.$q5.’,$’.$q5.’),$’.$q4.'($’
分享一個php加密方法,這個方法還比較實用
我們在開發過程中,有的時候GET傳值,字符串太長,我們可以用這個方法,在傳值之前先調用函數lock_url(加密字符串),加密以後在傳遞,GET接受以後用函數unlock_url(待解密字符串)進行解密。
如果大家有更好更簡單的方法,發評論區我們一起討論學習!
function lock_url($txt)
{
$key = ‘]!L]_w{O}zEIs!.f(T[|ZGQaxS”:?#`v%EburotLZi”KdKs@QivlJ[PjWw`.wcT’; //key
$chars = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+”;
$nh = rand(0,64);
$ch = $chars[$nh];
$mdKey = md5($key.$ch);
$mdKey = substr($mdKey,$nh%8, $nh%8+7);
$txt = base64_encode($txt);
$tmp = ”;
$i=0;$j=0;$k = 0;
for ($i=0; $istrlen($txt); p=”” {
$k = $k == strlen($mdKey) ? 0 : $k;
$j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64;
$tmp .= $chars[$j];
}
return urlencode($ch.$tmp);
}
//解密函數
function unlock_url($txt)
{
$key = ‘]!L]_w{O}zEIs!.f(T[|ZGQaxS”:?#`v%EburotLZi”KdKs@QivlJ[PjWw`.wcT’;//key
$txt = urldecode($txt);
$chars = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+”;
$ch = $txt[0];
$nh = strpos($chars,$ch);
$mdKey = md5($key.$ch);
$mdKey = substr($mdKey,$nh%8, $nh%8+7);
$txt = substr($txt,1);
$tmp = ”;
$i=0;$j=0; $k = 0;
for ($i=0; $istrlen($txt); p=”” {
$k = $k == strlen($mdKey) ? 0 : $k;
$j = strpos($chars,$txt[$i])-$nh – ord($mdKey[$k++]);
while ($j0) $j+=64;
$tmp .= $chars[$j];
}
return base64_decode($tmp);
}
PHP項目給客戶的源代碼怎麼加密?不希望別人做改版盜用二次開發之類的
市場上有很多,什麼IonCube、Zend Guard等,不過這個解密的話很簡單,網上很多教程。基本都是一鍵解密,而且這二種還都需要在服務器上額外安裝相應的擴展組件,已經很少人用了。
所以最好是程序員自己對源碼進行加密,這個能讓破解者頭疼,解密的話只能靠自己的經驗,沒有統一的解密方法。但是這種加密方式一般來說自己很難操作,藉助於相應的加密軟件吧,目前也就 PHP代碼加密工具 Xend 能獨擋一面,很多保護方式都不可逆,也支持用戶自己編程加密。
php源代碼被加密了,請問如何解密?
php源碼被使用zend加密,現階段還沒用解密方法。但是好像現在有這樣的一個studio,他們成功地完成了zend和eac的decode
不過是收費的
如何對PHP文件進行加密
Zend Guard是目前市面上最成熟的PHP源碼加密產品。
經過本人搜集資料,親身測試後,總結了如何利用Zend Guard對PHP文件進行加密,以及如何利用Zend Loader對加密後的PHP文件進行解密。
我使用的是Wampserver2.2,其中php的版本是5.3.10。(注意:這個裡面自帶的php版本屬於TS版本,即Thread safety線程安全)
Zend Guard的安裝及破解
點擊下載 Zend Guard5.5.0,下載完成後,請自行傻瓜式安裝。
破解需要注意以下幾點:
1、本KEY的有效時間為2010年7月10號,因此激活時,請將自己電腦的系統時間調整到這個時間之前,如:2009-01-01
2、本KEY激活的為試用版,加密過的文件只有14天有效時間,因此在加密文件時,請將自己電腦的系統時間向後調整幾年,如:2020-01-01
3、點擊下載授權文件 zend_guard授權文件.zip,解壓得到zend_guard.zl,即激活用的文件
4、打開Zend Guard 5.5.0,[Help] – [Register] – [Search for a license file on my disk],選擇zend_guard.zl授權文件激活即可
如何使用Zend Guard進行加密?
1、打開Zend Guard 5.5.0,[File]-[New]-[Zend Guard Project],新建項目。
彈出如下的對話框:
2、點擊 Next ,下一步。彈出如下對話框,選擇要進行加密的源文件或文件夾。
本步驟是選擇要加密的文件,可以是單個文件[Add File]或整個文件夾[Add Folder],然後[Next]。
(此處,我選擇的是對整個文件夾進行加密。即 D:\wamp\www\demo 里的所有文件進行加密。)
3、接下來是選擇PHP的版本[與你web服務器上PHP的版本相對照],這裡很重要,版本不對會出錯,[Finish]完成項目的創建。
注意: 對於Zend Guard 5.5.0這個版本的加密軟件,最高只可支持5.3版本的PHP。如果您的PHP版本較高,請到Zend Guard官網下載對應的高版本加密軟件。
(由於,我的PHP版本是PHP 5.3.10,故這裡我選擇PHP 5.3,其他地方可以默認,直接點擊完成)
4、在Zend Guard左側的Guard Explorer中,可以看到你新建的項目了,鼠標選中項目名稱後,右鍵單擊[Encode Project],完成。
如此,就實現了對PHP源碼的最簡單的加密。
我們可以在產品的輸出目錄(D:\productDir)里,看到加密後的文件。
可以看出,產品輸出目錄里的PHP文件已被加密了。
這種最簡單的加密方式,我們並沒有設置加密的有效期,也沒有設置許可證支持(即解密時,是否需要許可證文件),默認是永不過期,不需要解密許可文件。
如果要設置解密時的許可證文件,可以點擊 項目名稱(project_test) ,再點擊 項目主窗口中的 Overview 旁邊的 Security 選項卡,就可以進行更加安全的加密設置了。 如下圖:
Zend Loader 解密
上面我們已經對PHP代碼進行了最簡單的加密(編碼),加密後生成的PHP源代碼,就不能再被web服務器上的PHP模塊解析了。
當我們將加密後的php文件放到web服務器上執行時,會顯示如下信息:
Zend Guard Run-time support missing!
One more more files on this web site were encoded by ZendGuard and the required run-time support is not installed orproperly configured.
……
原來,加密後的php代碼需要ZendGuardLoader模塊才能正常運行。
因為我的php版本是5.3.10的,所以我這裡只提供了ZendGuardLoader-php-5.3-Windows,如果是其他版本的php,請自行百度。
點擊下載 ZendGuardLoader-php-5.3-Windows
下載後,解壓壓縮包,找到目錄里的 ZendLoader.dll 文件,將它複製到你的php目錄里的ext目錄(PHP的擴展庫目錄)下,再編輯PHP的配置文件php.ini,添加如下代碼:
[Zend.loader],
zend_loader.enable=1
zend_loader.disable_licensing=1
zend_loader.obfuscation_level_support=3
zend_loader.license_path=
zend_extension=”d:\wamp\bin\php\php5.3.10\ext\ZendLoader.dll”
註:
zend_loader.enable 表示是否啟用zend loader,1表示啟用,0表示禁用
zend_loader.disable_licensing 表示是否禁用許可證,1表示禁用,0表示不禁用 (由於上面我加密php文件的時候,沒有設置許可證支持,故解密時,禁用許可證)
zend_loader.obfuscation_level_support 表示代碼混淆級別
zend_loader.license_path 指定許可證文件的路徑
zend_extension 指定zend loader 擴展文件 的路徑
配置完成後,重啟wampserver,如果您的php的版本是NTS(非線程安全的話),就可以正常執行加密後的PHP文件了。
但是,多數情況下的php版本都是TS(線程安全)的,比如,我這個wampserver集成環境中的php是php-5.3.10-ts,它是沒有辦法支持Zend Guard Loader擴展文件的。故還會報出上面的錯誤提示信息。
因為,Zend Guard Loader 只能支持 NTS版本的php,終極解決辦法是下載安裝 NTS 版本的php。
為了實現PHP源文件的 Zend 解密測試,可以下載安裝 php-5.3.29-nts-Win32-VC9-x86,再來配置 Zend Loader 擴展支持。
如何查看安裝好的PHP的版本及PHP是否已經成功支持Zend Loader?
通過查看 phpinfo() 函數的輸出信息,利用 Ctrl + F 快速查找關鍵字Thread Safety 和 Zend Guard Loader。
如本人安裝好php-5.3.29-nts版本的php後,phpinfo()的輸出信息如下:
可以看到,Thread Safety 對應的值為disabled,就說明該php的版本是 NTS (非線程安全)的,否則就是TS版本的。
輸出信息中,還可以看到 Zend Guard Loader v3.3 字樣,說明 Zend Guard Loader 也安裝成功了。
再往下面看,還可以查看 Zend Guard Loader 的配置信息,如下:
到此,整個 Zend Guard 加密和 Zend Guard Loader 解密,就介紹完畢了。
溫馨提示: 為了順利實現PHP代碼的zend加密和解密,建議使用PHP官網上主流的PHP的NTS版和Zend官網上對應的Zend Guard加密軟件、 Zend Guard Loader解密插件。
相關附件:
Wampserver2.2
Zend
Guard5.5.0
php-5.3.29-nts-Win32-VC9-x86
mod_fcgid-2.3.6-win32-x86.zip
怎樣給PHP源代碼加密
試試IP-guard
支持各種源代碼自動加密保護,加密解密無需手動操作,只要在部署了IP-guard的環境下就可以正常使用,而未經解密將加密的源代碼帶離授權環境,則無法正常打開源代碼操作。後盾人有教程的,你去看看
原創文章,作者:PQPAG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/325506.html