php加密組件
這個我不知道。
加密工具,我建議您使用超級加密3000試試。
超級加密3000採用國際上成熟的加密演算法和安全快速的加密方法,可以有效保障數據安全!
具體操作方法:
1 下載安裝超級加密3000。
2 然後在需要加密的文件上單擊滑鼠右鍵選擇加密。
3 在彈出的文件加密窗口中設置文件加密密碼就OK了。
② Php 源碼加密組件是如何工作的
這些擴展可以直接修改zend引擎的運行時數據結構,例如生成_zend_execute_data(裡面有opcode等等)、_zend_function(函數信息)、_zend_class_entry(類信息)等等。加密的時候先轉成這些數據,解密的時候改運行時數據結構,就相當於include了加密前的PHP代碼。
當然,也不排除直接解密成文件然後include或者eval。
③ 如何安裝,PHP擴展加密組件
用c做一個php的加密擴展,在php.ini引入一下,就可以了
④ PHP 加密:AES & RSA
最近兩年一直從事與金融相關項目的開發與維護。但是,關於 PHP 加密解密的最佳實踐,網上沒有人給出一個完美的總結。恰逢最近看了《圖解密碼技術》一書,對 PHP 加解密有了更深刻的認識。
為了避免各位看枯燥的文字理論,開篇我就把總結給出:
一、對稱加密
對稱加密的特點是加解密速度快,加密後的密文強度目前還沒有硬解的可能性。但是,在未來隨著計算機性能的提升有可能會出現被破解的可能性。
對稱加密的缺點也很明顯。對稱加密的加密過程與解密過程使用的是同一把密鑰。一旦泄漏密鑰,加密就失去了任何意義。
根據《圖解密碼技術》一書的推薦,對稱加密目前推薦使用 AES。在 PHP 當中要實現 AES 加解密,是使用 openssl 擴展來實現。所以,請確保你的 PHP 已經開啟了 openssl 擴展。
可以通過如下方式檢測:
或者如下方式檢測:
AES 的加密模式屬於分組密碼模式。所謂分組密碼,是加密時把明文按照固定的長度分組,然後再進行加密。當然,細節之處很很多不同。AES 分組模式有多種:ECB、CBC、CFB、OFB、CTR 五種分組模式。目前優先推薦使用 CBC 模式。
如果使用 CBC 模式,那麼在加密的時候,就需要一個前置的加密向量 IV。當初博主在使用 AES 來加密的時候,就很奇怪一個對稱加密為何要這個向量。因為,在博主寒冰的潛意識里,對稱加密只需要一個密鑰就 Ok 了。沒想到 AES 加密還有多種模式,而這個 CBC 模式恰恰就需要一個這樣的向量值。關於這個向量大家可以在網上查閱相關的資料。這個東西非常重要,也非常好理解。
關於 PHP AES 加解密會用到的相關方法:
AES 支持三種強度:128、192、256。128 位的強度最低,但是,加密解密速度較快。256 位強度最高,但是,加密解密速度最低。所以,大家根據自己系統的重要程度選擇使用對應強度。通常普通的金融項目使用 192 位完整夠用了。頂級的就用 256 位。其他的就用 128 位吧。
二、非對稱加密
非對稱加密是指公鑰加密私鑰解密,私鑰加密公鑰解密的演算法。非對稱加密的演算法有很多。《圖解密碼技術》一書推薦使用 RSA 演算法。它使用起來也非常簡單。
要使用 RSA 演算法。首先,我們必須生成一對公鑰私鑰。其實生成公鑰私鑰很簡單。
在 Linux 系統,直接使用如下命令生成:
此命令會生 ~/.ssh/ 目錄下生成兩個文件:
id_rsa 是私鑰, is_rsa.pub 是公鑰。
關於 PHP RSA 加解密會用到的相關方法:
以上就是關於在 PHP 項目開發中,我們使用的加密解密演算法的一個總結。博主寒冰在總結過程中難免會有不足之處,還請大家指正!謝謝!
⑤ 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文件進行加密
php加密平台自開通以來已加密了670367個php文件,總數據大小5823.04 MB2015-04-18更新:PHP在線加密Beta版支持命名空間加密,即php源碼中有namespace的文件加密。2015-01-13維護:修復PHP5.5及以上php版本更好支持php加密(免費版已不更新,不修復)
php授權用戶動態簡化,只記錄授權變化狀態2014-12-09新增自定義授權錯誤信息提示(以前為白屏)2014-06-22新增支持heredoc和nowdoc語法結構的字元串2014-03-24修復部份代碼中使用__FILE__不兼容的BUG2013-09-02修改:php免費加密後版權信息中增加中文聲明2013-08-01新增功能:授權版可鎖定php文件加密的文件名,php文件加密後不允許更改文件名。此功能配合鎖定域名功能效果更佳。
修復:部份環境中獲取不到伺服器IP地址2013-06-20維護:常規更新維護,PHP加密代碼小調整。2013-05-12修改:重寫授權版的PHP加密演算法,提高對代碼的保護。2013-04-11調整:發現有個別用戶使用我們免費的php加密平台對php源碼加密後作為非法用途,因此把免費版對上傳的php文件大小調整為50K。2013-03-11修改:為了加強付費授權版的使用安全,把免費版和付費授權版的演算法分開處理。以後升級過程中主要針對付費授權版進行升級,免費版只做BUG修復處理。2013-02-01修改:免費版的版權信息中不再顯示內核更新日期。
修改:編碼加強混淆程度2013-01-07修改:php加密後的代碼中去除「PHPJM_」標志性字元。
新增:先對php源碼壓縮後再加密,減小加密後的php文件大小
修復:php源代碼中的php標簽只有<?而沒有?>時的BUG2012-12-11新增功能:授權版可鎖定在某個日期段內運行,可將您的代碼以試用方式進行發布。
修改:不再限制加密後的文件以.php為擴展名運行,支持以任何擴展名保存加密後的文件。
修復:自定義版權信息亂碼BUG2012-11-14PHP在線加密平台上線2012-11-06完成PHP加密核心演算法代碼。
⑦ 如何對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:\proctDir)里,看到加密後的文件。
可以看出,產品輸出目錄里的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源碼怎麼加密
一、無需任何PHP擴展的加密
此類加密的代表有 威盾PHP加密專家、PHP在線加密平台、PHP神盾 等。
此類加密都是以eval函數為核心,輔以各式各樣的字元串混淆和各種小技巧,來達到加密目的(更准確的說,應該算是混淆)。下面以一個簡單的hello world為例來說明此類加密的大體過程。
<?php
echo "hello world";
首先 ,我們把這段代碼變為通過eval執行的
<?php
eval('echo "hello world";');
然後 ,我們再進行一些轉換,比如說base64編碼
<?php
eval(base64_decode('ZWNobyAiaGVsbG8gd29ybGQiOw=='));
就這樣子,我們的第一個加密過的php代碼新鮮出爐了。。。
上面這個例子非常非常簡單,基本上任何有一點php語言基礎甚至別的語言基礎的人都能輕松的看懂並解密。因此,我們需要一些方法讓這個加密至少看上去不是那麼簡單。
二、同時採用多種編碼函數
除了剛才提到的base64,php還有許多內置的編碼函數,例如urlencode、gzcompress等。把這些函數混合使用可以提高解密的復雜度(不是難度),此外還可以使用strtr來制定自己的編碼規則。 使用變數來代替函數名 使用特定字元來命名變數
這兒所說的特定字元是一些極其相似的字元,如I和1,0和O。試想一下滿屏都是O和0組成的變數,並且每一個的名字長度都在10個字元以上。。。 判斷文件自身是否被修改
這個功能看似容易,對文件做一下摘要再進行下對比即可知道是否被修改了,但是如何才能在文件內把摘要嵌入進去呢?我沒有找到完美的方案,但一個變通的方案還是很容易的。。。
<?php
$code = substr(file_get_contents(__FILE__), 0, -32);
$hash = substr(file_get_contents(__FILE__), -32);
if (md5($code) !== $hash) {
exit('file edited');
}
當然,你可以把這個校驗字元串放在別的位置來提高破解的難度。有了這個,別人想破解你的程序可就得多費一點功夫了。。。
既然知道了原理,那解密自然也就非常簡單了,總體來說就三步:
把eval替換為輸出,比如echo 根據編碼規則把字元串還原 如果文件未解密完全,從第一步開始繼續
當然,實際上的解密過程並沒有這么簡單,比如說如果加密的時候使用了gzcompress,那得到的數據將會包含一些二進制數據,而採用一般的文本編輯器打開時這些數據都會顯示為亂碼,並且在保存時丟失部分數據。解決方法很簡單也很麻煩,那就是使用二進制(16進制)方式打開、修改和保存。
⑨ 如何對PHP文件進行加密
對PHP文件進行加密,通常使用 Zend Guard,這是目前市面上應用比較多的PHP源碼加密產品。
加密流程大概如下:
1、打開Zend Guard 5.5.0,[File]->[New]->[Zend Guard Project],新建項目。
2、點擊 Next ,下一步。彈出如下對話框,選擇要進行加密的源文件或文件夾。
3、接下來是選擇PHP的版本[與你web伺服器上PHP的版本相對照],這里很重要,版本不對會出錯,[Finish]完成項目的創建。
4、在Zend Guard左側的Guard Explorer中,可以看到你新建的項目了,滑鼠選中項目名稱後,右鍵單擊[Encode Project],完成。
⑩ php 怎麼用zend加密
ZendGuard是一款php的加密工具,它可以編譯php源碼變為位元組碼
加密的具體步驟如下:
1:在網上下載ZendGuard
關於PHP文件加密的軟體
2:安裝完畢以後,找到bin目錄下zendenc.exe
。註:(別忘記搞上破解版。)
3:使用方法,先找一個你要加密的php文件,比如iii.php。
4:然後在命令行裡面輸入:
zendenc
iii.php
33.php
5:第二個參數是你的要加密的php文件,第三個參數是輸出文件的名字.
附件裡面有個最簡單的webshell可加密以後的文件。
6:加密成功,可以把加密的前後的PHP文件進行對比