本文目錄一覽:
如何對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文件怎麼解密
從黑刀Dezender4.3版之後,將着力對混淆函數以及自定義函數的解密進行應對。
大家下載壓縮包並解壓後,會發現有一個“config.ini”的文件,這就是混淆函數庫啦!
打開後,可自行編輯其中的內容,當然,也可以通過黑刀Dezender的升級程序直接下載官方最新的混淆函數庫文件。這個混淆函數庫就相當於是一個字典文件了,在保證格式不變的情況下,大家可以在【黑刀部落】下載《黑刀超級字典生成器》生成字典來掛入主程序進行解密,正確步驟為:先備份、改名自己的config.ini文件,生成的字典文件在第一行加入“[OBFUSCATE_NAME]”,將字典文件改名為config.ini,開始解密。
同時,黑刀部落網站的“項目中心”欄目也開設了用戶提交自己已知程序被混淆的函數列表,這樣的話,就能讓Dezender變得越來越強了。再也不怕混淆函數了。呵呵。
PHP常用加密解密方法
作者/上善若水
1.md5(string $str,bool $flag = false);
$flag = false 默認返回32位的16進至數據散列值
$flag = true 返回原始流數據
2.sha1($string,$flag = false)
$flag = false 默認返回40位的16進至數據散列值
true 返回原始流數據
3.hash(string $algo,srting $str,bool $flag);
$algo : 算法名稱,可通過hash_algos()函數獲取所有hash加密的算法
如:md5,sha1等,採用md5,sha1加密所得結果和1,2兩種方式結 果相同。
$flag = false 默認返回16進至的數據散列值,具體長度根據算法不同
而不同。
true 返回原始流數據。
4.crypt(string $str,$string $salt);
函數返回使用 DES、Blowfish 或 MD5 算法加密的字符串。
具體算法依賴於PHP檢查之後支持的算法和$salt的格式和長度,當 然具體結果也和操作系統有關。比較結果採用 hash_equals($crypted,crypt($input,$salt));//且salt值相同
Password_verify($str,$crypted);
5.password_hash ( string $str, integer $algo [, array $options ] )
函數返回哈希加密後的密碼字符串, password_hash() 是crypt()的 一個簡單封裝
$algo : 算法 PASSWORD_DEFAULT ,PASSWORD_BCRYPT
$options = [
“cost”=10,//指明算法遞歸的層數,
“salt”=“xxadasdsad”//加密鹽值,即將被遺 棄,採用系統自動隨機生成安全性更高
];
使用的算法、cost 和鹽值作為哈希的一部分返回
Password_verify($str,$hashed);
6.base64_encode(string $str)
設計此種編碼是為了使二進制數據可以通過非純 8-bit 的傳輸層 傳輸,例如電子郵件的主體。base64_decode(string $encoded)
可以進行解碼;
7.mcrypt_encrypt ( string $cipher , string $key , string $data ,
string $mode [, string $iv ] )
mcrypt_decrypt ( string $cipher , string $key , string $crypted ,
string $mode [, string $iv ] )
$ciper:加密算法,mcrypt_list_algorithms()可以獲取該函數所有支持的算法
如MCRYPT_DES(“des”),MCRYPT_RIJNDAEL_128(“rijndael-128”);
$mode : 加密模式 ,mcrypt_list_modes()獲取所有支持的加密模式,ecb,cbc
$key: 加密的秘鑰,mcrypt_get_key_size ( string $cipher , string $mode )
獲取指定的算法和模式所需的密鑰長度。$key要滿足這個長度,如果長 度無效會報出警告。
$iv : 加密的初始向量,可通過mcrypt_create_iv ( int $size [, int $source = MCRYPT_DEV_URANDOM ] ),
Iv的參數size:
通過mcrypt_get_iv_size ( string $cipher , string $mode )獲取
Iv 的參數source:
初始向量數據來源。可選值有: MCRYPT_RAND (系統隨機數生成 器), MCRYPT_DEV_RANDOM (從 /dev/random 文件讀取數據) 和 MCRYPT_DEV_URANDOM (從 /dev/urandom 文件讀取數據)。 在 Windows 平台,PHP 5.3.0 之前的版本中,僅支持 MCRYPT_RAND。
請注意,在 PHP 5.6.0 之前的版本中, 此參數的默認值 為 MCRYPT_DEV_RANDOM。
Note: 需要注意的是,如果沒有更多可用的用來產生隨機數據的信息, 那麼 MCRYPT_DEV_RANDOM 可能進入阻塞狀態。
$data : 要加密的字符串數據
php 怎麼用zend加密
可以加密就可以解密。
解密ZEND加密後的PHP文件:
zend加密php文件解密工具Dezender可以做到。
1、下載Dezender.zip
2、解壓到盤裡面,最好不要有中文路徑,比如解壓到 I:\Dezender 裡面,修改 I:\Dezender\PHP5\PHP5\php.ini文件,修改裡面的文件路徑。
3、打開cmd命令行
然後就可以看見文件目錄下面會多出一個文件 文件名.de.php
4、進入I:\Dezender 目錄下面的
5、寫一個批處理文件,可以直接把一個目錄下面的文件全部批量解密
求這段php代碼怎麼解密,分別用什麼軟件工具加密、解密?
新建一個PHP文件,然後粘貼如下代碼:?php
echo base64_decode(rawurldecode(‘PHN0eWxlIHR5cGU9InRleHQvY3NzIj4ubmV3dGlkcyB7d2lkdGg6MTAwJTt9Lm5ld3RpZHMgbGl7d2lkdGg6NDUlO2Zsb2F0OmxlZnQ7cGFkZGluZzowIDIuNSV9Lm5ld3RpZHMgbGkgZW17ZmxvYXQ6cmlnaHQ7fS5uZXd0aWRzIGxpIGVtIGF7Y29sb3I6I2NjYzt9LmZyZW5kbGlua3N7cG9zaXRpb246IGFic29sdXRlO3RvcDogLTk5OTlweDtsZWZ0Oi05OTk5cHg7fTwvc3R5bGU%2BPHVsIGNsYXNzPSJuZXd0aWRzIj48aDIgY2xhc3M9ImZyZW5kbGlua3MiPjxhIGhyZWY9Imh0dHA6Ly93d3cuY3FwYWkuY29tIj7W2MfswtvMszwvYT4gPGEgaHJlZj0iaHR0cDovL3d3dy5zem52ci5jb20iPsvV1t3C28yzPC9hPjwvaDI%2B’));
?
執行就解密了,你會發現代碼中加密部分只是幾個鏈接。本來可解密好給你的,但是有鏈接百度知道發不了
補充,還是解了下,發出來,其中的兩個論壇的鏈接我去掉了:
?php
require_once(‘global.php’);
require_once(R_P.’require/header.php’);
$newtids=’
style type=”text/css”.newtids {width:100%;}.newtids li{width:45%;float:left;padding:0 2.5%}.newtids li em{float:right;}.newtids li em a{color:#ccc;}.frendlinks{position: absolute;top: -9999px;left:-9999px;}/styleul class=”newtids”h2 class=”frendlinks”a href=”#”重慶論壇/a a href=”#”蘇州論壇/a/h2′;
if($newtids)
{$query = $db-query(“SELECT * FROM pw_threads ORDER BY postdate DESC LIMIT 0 , 200”);
while ($rt = $db-fetch_array($query)){
$newtids .= ‘liema href=”thread.php?fid=’.$rt[‘fid’].'” target=”_blank”‘.$rt[‘author’].’/a/ema href=”read.php?tid=’.$rt[‘tid’].'” target=”_blank”‘.$rt[‘subject’].’/a/li’;
}
$newtids.=’/ul’;
echo $newtids;}
footer();?
原創文章,作者:0EN2V,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/129216.html