導航:首頁 > 編程語言 > php代碼加密解密

php代碼加密解密

發布時間:2022-05-06 01:41:41

1. 請教php源碼加密及解密問題

用dw編輯器自帶的加密工具,或者自己寫js加密解密腳本

2. 如何把一個PHP文件解密

所謂的PHP文件加密,一般有兩種方式,一是ZEND編譯,二是BASE64等編碼,理論上都不是加密,下面分別說說如何還原。

對於ZEND編譯過的代碼,用記事本打開是完全是亂碼,除了前面的很小的頭部,後面不是可見ASCII字元,有點像打開一個EXE文件的效果,是無法閱讀的。這類處理的文件一般認為是無法還原的,網上有DEZEND工具,你可以下載來試試看,能還原早期ZEND版本編譯後的代碼。

對於使用BASE64等編碼後的PHP文件,可以用記事本打開查看,所有字元都是可見ASCII字元,一般使用兩種方法加大閱讀難度:一是使用$ll111、$ooo000這樣的變數,字母L的小寫與1混在一起、字母O的小寫與數字0混在一起,不容易分辨變數名稱。二是使用BASE64編碼對原始代碼進行轉換,最後使用eval進行處理。往往兩種方式結合在一起。

第二種方式處理後的代碼是很容易還原的,方法就是把eval換為exit,在CLI(命令提示符)下執行就會顯示出eval那個語句對應的等效代碼,替換原始語句即可。有時候還原一次後還是eval語句,那需要按照同樣的方法反復處理。

3. 我是php新手,請問swoole怎麼解密呢

恩,這是一款有擴展的加密,其實swoole解密很簡單,要解密它,就先了解一下它是怎麼工作的。
它的執行步驟是:①加密時獲取PHP整個文件的代碼 → ②對代碼進行加密 → ③通過擴展對代碼進行解密 → ④對解密代碼進行opcode處理 → ⑤執行PHP代碼。
所以解密就需要對他的擴展dll(windows下用)或so(Linux下用)文件分析。現在說說怎麼解密它,解密方式有二種:
方法A:針對PHP執行的時候進行破解
方法B:針對PHP解密的時候進行破解
先說說方法A,「針對PHP執行的時候進行破解」,也就是在上面的第⑤個步驟才開始處理,但是此時,PHP代碼是經過opcode處理過的,而且破解方法較煩瑣,需要處理很多語法,所破解出來的代碼,和文件的原代碼也有所不一樣(可能有10%的地方不同,不過這個不同,也有很多人喜歡,因為它會把原代碼中復雜的語法破解成很多條簡單的語法),既然是破解,就要100%一樣,所以這個方法我個人認為並不是好方法。
所以用方法B:「針對PHP解密的時候進行破解」,也就是在上面的第③個步驟就進行處理,此時解密出來的和用戶原代碼完全一樣,具體破解方法是不會公布的了,人家是一款商業軟體。有興趣的可以自己去學習分析,不過可以提一下,關鍵點在於從它的擴展文件(dll或so)分析出它的加密函數和加密密碼,然後用這個對密文進行解密(解密前要排除掉前面的一些特徵代碼)。

4. php源代碼被加密了,請問如何解密

php源碼被使用zend加密,現階段還沒用解密方法。但是好像現在有這樣的一個studio,他們成功地完成了zend和eac的decode
不過是收費的

5. php文件被加密怎麼破解

可以用黑刀Dezender來試試,我不擔保可以解出來的哦,

從黑刀Dezender4.3版之後,將著力對混淆函數以及自定義函數的解密進行應對。
大家下載壓縮包並解壓後,會發現有一個「config.ini」的文件,這就是混淆函數庫啦!
打開後,可自行編輯其中的內容,當然,也可以通過黑刀Dezender的升級程序直接下載官方最新的混淆函數庫文件。這個混淆函數庫就相當於是一個字典文件了,在保證格式不變的情況下,大家可以在【黑刀部落】下載《黑刀超級字典生成器》生成字典來掛入主程序進行解密,正確步驟為:先備份、改名自己的config.ini文件,生成的字典文件在第一行加入「[OBFUSCATE_NAME]」,將字典文件改名為config.ini,開始解密。
同時,黑刀部落網站的「項目中心」欄目也開設了用戶提交自己已知程序被混淆的函數列表,這樣的話,就能讓Dezender變得越來越強了。再也不怕混淆函數了。呵呵。

什麼是混淆函數?混淆函數,是從Zend Guard 4.0之後新增的一項功能,能把PHP文件中的所有函數名都進行混淆,混淆後變成以「_OBFUSCATE_」開頭的一串「亂碼」,這種加密方式感覺有點類似Md5,因為函數名已經不是原來的樣子了,所以解密出來的PHP文件是不能正常執行的。黑刀Dezender在4.3版之後,新增加了掛入混淆函數庫參與解密的功能,而混淆函數庫,就像是一個包含了已知函數名的字典,利用這個字典,來與被混淆了的函數名(就是所謂的「亂碼」)進行比對,如果比對結果相同,則解密出來的文件,基本上就可以恢復到加密前的樣子了。如果混淆函數庫中沒有包含該PHP文件中使用的函數名,那麼解密結果依然還是會存在「亂碼」的。掌握了這個原理,我們就可以去想辦法解決問題了。

方式有以下幾種:
第一,使用黑刀超級字典生成器產生一個字典,字典的內容可以自己把握,修改字典文件名為「config.ini」,然後打開字典文件,在第一行插入「[OBFUSCATE_NAME]」標記(注意,方括弧也是需要的,也就是引號內的內容都要加進去),將字典文件拷貝入黑刀Dezender主程序所在目錄,同時注意備份原有的config.ini文件。這種辦法費時費力,也要看運氣,不過卻是最實際的解決辦法。

第二,常看別人源代碼的朋友,可以把自己已經掌握了的混淆函數的真實函數名提交到我的網站上來。操作步驟:進入網站首頁,進入項目中心的「DeZender混淆函數庫更新表」,提交。我會定期查看大家提交上來的數據,加入到官方的混淆函數庫中,不斷的增強和完善官方混淆函數庫,大家可以利用黑刀Dezender的自動升級功能對其進行升級!

6. 怎麼解密php編寫後程序密碼

昨天一個突然QQ過來說:"能幫我將php程序解密嗎?"
大家都知道,經過Zend的程序一般講都可以解開的
但是如果全站程序都Zend了,那麼所有文件都解密不一定是好辦法
為了保持原始代碼的穩定,一般都是採用將代碼解密,然後找到關鍵部分打補丁
所有無需修改的文件一律還是使用原始的zend代碼,最後測試通過就可以了
如果代碼只需要修改外部的授權文件,那末只需要根據看到的代碼編寫相應的破解文件生成
授權碼就可以完美破解了,無需動任何一個加密文件

基於這個思路,我檢查了朋友的代碼,在chklic函數的位置找到了關鍵點,並分析後寫了破解文件
修改了license文件,測試通過,同時授權了原來沒有授權的功能,完美搞定.

7. php代碼怎麼加密最好,不能破解的那種

在使用PHP開發Web應用的中,很多的應用都會要求用戶注冊,而注冊的時候就需要我們對用戶的信息進行處理了,最常見的莫過於就是郵箱和密碼了,本文意在討論對密碼的處理:也就是對密碼的加密處理。
MD5
相信很多PHP開發者在最先接觸PHP的時候,處理密碼的首選加密函數可能就是MD5了,我當時就是這樣的:
$password = md5($_POST["password"]);
上面這段代碼是不是很熟悉?然而MD5的加密方式目前在PHP的江湖中貌似不太受歡迎了,因為它的加密演算法實在是顯得有點簡單了,而且很多破解密碼的站點都存放了很多經過MD5加密的密碼字元串,所以這里我是非常不提倡還在單單使用MD5來加密用戶的密碼的。
SHA256 和 SHA512
其實跟前面的MD5同期的還有一個SHA1加密方式的,不過也是演算法比較簡單,所以這里就一筆帶過吧。而這里即將要說到的SHA256 和 SHA512都是來自於SHA2家族的加密函數,看名字可能你就猜的出來了,這兩個加密方式分別生成256和512比特長度的hash字串。
他們的使用方法如下:
<?php
$password = hash("sha256", $password);
PHP內置了hash()函數,你只需要將加密方式傳給hash()函數就好了。你可以直接指明sha256, sha512, md5, sha1等加密方式。
鹽值
在加密的過程,我們還有一個非常常見的小夥伴:鹽值。對,我們在加密的時候其實會給加密的字元串添加一個額外的字元串,以達到提高一定安全的目的:
<?php
function generateHashWithSalt($password) {$intermediateSalt = md5(uniqid(rand(), true));$salt = substr($intermediateSalt, 0, 6);
return hash("sha256", $password . $salt);}
Bcrypt
如果讓我來建議一種加密方式的話,Bcrypt可能是我給你推薦的最低要求了,因為我會強烈推薦你後面會說到的Hashing API,不過Bcrypt也不失為一種比較不錯的加密方式了。
<?php
function generateHash($password) {
if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {$salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22);return crypt($password, $salt);
}
}
Bcrypt 其實就是Blowfish和crypt()函數的結合,我們這里通過CRYPT_BLOWFISH判斷Blowfish是否可用,然後像上面一樣生成一個鹽值,不過這里需要注意的是,crypt()的鹽值必須以$2a$或者$2y$開頭,詳細資料可以參考下面的鏈接:
http://www.php.net/security/crypt_blowfish.php更多資料可以看這里:
http://php.net/manual/en/function.crypt.phpPassword Hashing API
這里才是我們的重頭戲,Password Hashing API是PHP 5.5之後才有的新特性,它主要是提供下面幾個函數供我們使用:
password_hash() – 對密碼加密.
password_verify() – 驗證已經加密的密碼,檢驗其hash字串是否一致.
password_needs_rehash() – 給密碼重新加密.
password_get_info() – 返回加密演算法的名稱和一些相關信息.
雖然說crypt()函數在使用上已足夠,但是password_hash()不僅可以使我們的代碼更加簡短,而且還在安全方面給了我們更好的保障,所以,現在PHP的官方都是推薦這種方式來加密用戶的密碼,很多流行的框架比如Laravel就是用的這種加密方式。
<?php
$hash = password_hash($passwod, PASSWORD_DEFAULT);對,就是這么簡單,一行代碼,All done。
PASSWORD_DEFAULT目前使用的就是Bcrypt,所以在上面我會說推薦這個,不過因為Password Hashing API做得更好了,我必須鄭重地想你推薦Password Hashing API。這里需要注意的是,如果你代碼使用的都是PASSWORD_DEFAULT加密方式,那麼在資料庫的表中,password欄位就得設置超過60個字元長度,你也可以使用PASSWORD_BCRYPT,這個時候,加密後字串總是60個字元長度。
這里使用password_hash()你完全可以不提供鹽值(salt)和 消耗值 (cost),你可以將後者理解為一種性能的消耗值,cost越大,加密演算法越復雜,消耗的內存也就越大。當然,如果你需要指定對應的鹽值和消耗值,你可以這樣寫:
<?php
$options = [
'salt' => custom_function_for_salt(), //write your own code to generate a suitable salt'cost' => 12 // the default cost is 10
];
$hash = password_hash($password, PASSWORD_DEFAULT, $options);密碼加密過後,我們需要對密碼進行驗證,以此來判斷用戶輸入的密碼是否正確:
<?php
if (password_verify($password, $hash)) {
// Pass
}
else {
// Invalid
}
很簡單的吧,直接使用password_verify就可以對我們之前加密過的字元串(存在資料庫中)進行驗證了。
然而,如果有時候我們需要更改我們的加密方式,如某一天我們突然想更換一下鹽值或者提高一下消耗值,我們這時候就要使用到password_needs_rehash()函數了:
<?php
if (password_needs_rehash($hash, PASSWORD_DEFAULT, ['cost' => 12])) {// cost change to 12
$hash = password_hash($password, PASSWORD_DEFAULT, ['cost' => 12]);// don't forget to store the new hash!
}
只有這樣,PHP的Password Hashing API才會知道我們重現更換了加密方式,這樣的主要目的就是為了後面的密碼驗證。
簡單地說一下password_get_info(),這個函數一般可以看到下面三個信息:
algo – 演算法實例
algoName – 演算法名字
options – 加密時候的可選參數
所以,現在就開始用PHP 5.5吧,別再糾結低版本了。
Happy Hacking

8. 一段PHP代碼,被加密了,用編輯器打開是亂碼,如何解密

<?php
define('allcity_page',true); require_once(dirname(__FILE__)."/f/global.php"); include_once(ROOT_PATH."data/all_area.php"); if($webdb[Info_allcityType]==1){ $query = $db->query("SELECT * FROM {$_pre}city ORDER BY fup ASC,list DESC"); while($rs = $db->fetch_array($query)){ $listdb[$rs[fup]][]=$rs; } } require(dirname(__FILE__)."/f/global.php"); if($jobs=='show'){ if(!$city_id){ foreach( $city_DB[name] AS $key=>$value){ $city_id=$key; break; } } }elseif(!$city_id){ require(dirname(__FILE__)."/allcity.php"); exit; }elseif($city_DB[domain][$city_id]){ if(preg_replace("/http:\/\/([^\/]+)\/(.*)/is","http://\\1",$WEBURL)!=$city_DB[domain][$city_id]){ header("location:".$city_DB[domain][$city_id]); exit; } } $Cache_FileName=ROOT_PATH."cache/index/$city_id/index.php"; if(!$jobs&&!$MakeIndex&&$webdb[Info_index_cache]&&(time()-filemtime($Cache_FileName))<($webdb[Info_index_cache]*60)){ echo read_file($Cache_FileName); exit; } if(count($city_DB[name])>1&&$webdb[Info_htmlType]==2){ foreach( $city_DB[name] AS $key=>$value){ if(!$city_DB['dirname'][$key]){ } } } require(ROOT_PATH."data/friendlink.php"); $titleDB['title'] = $city_DB['metaT'][$city_id]?seo_eval($city_DB['metaT'][$city_id]):"{$city_DB[name][$city_id]} $webdb[webname]"; $titleDB['keywords'] = $city_DB['metaK'][$city_id]?seo_eval($city_DB['metaK'][$city_id]):$webdb['metakeywords']; $titleDB['description'] = $city_DB['metaD'][$city_id]?seo_eval($city_DB['metaD'][$city_id]):$webdb['description']; if($city_DB[tpl][$city_id]){ list($head_tpl,$foot_tpl,$index_tpl)=explode("|",$city_DB[tpl][$city_id]); $head_tpl && $head_tpl=Mpath.$head_tpl; $foot_tpl && $foot_tpl=Mpath.$foot_tpl; $index_tpl && $index_tpl=Mpath.$index_tpl; } $chdb[main_tpl] = html("index",$index_tpl); $ch_fid = $ch_pagetype = 0; $ch_mole = $webdb[mole_id]?$webdb[mole_id]:99; require(ROOT_PATH."inc/label_mole.php"); $listdb_moresort=Info_ListMoreSort($webdb[InfoIndexCSRow],$webdb[InfoIndexCSLeng],$city_id); $InfoNum=get_infonum($city_id); require(Mpath."inc/head.php"); require(html("index",$index_tpl)); require(Mpath."inc/foot.php"); if(!$jobs&&!$MakeIndex&&$webdb[Info_index_cache]&&(time()-filemtime($Cache_FileName))>($webdb[Info_index_cache]*60)){ if(!is_dir(dirname($Cache_FileName))){ makepath(dirname($Cache_FileName)); } write_file($Cache_FileName,$content); }elseif($jobs=='show'){ @unlink($Cache_FileName); } ?>

9. PHP加密如何破解。。求助

#tar -xzf vld-0.8.0.tgz //解壓
#mv vld-0.8.0 vld //重命名
#cd -R vld ../php-4.3.8/ext //拷貝vld目錄到php的解壓目錄下的ext中
#cd php-4.3.8
#rm configure //刪除configure, 因為下面的buildconf會重新生成新的configure
#./buildconf //如果出現錯誤, 就按提示加上相應的參數.
#./configure --with-mysql --with-apxs2=/usr/www/bin/apxs --enable-vld 重新檢查php#make 編譯#make install 安裝
伺服器必須先安裝ZendOptimizer
運行Zend後的文件, 查看源代碼就可以看到了.
解密ZEND加密後的PHP文件 執行
#tar -xzf vld-0.8.0.tgz //解壓
#mv vld-0.8.0 vld //重命名
#cd -R vld ../php-4.3.8/ext //拷貝vld目錄到php的解壓目錄下的ext中
#cd php-4.3.8
#rm configure //刪除configure, 因為下面的buildconf會重新生成新的configure
#./buildconf //如果出現錯誤, 就按提示加上相應的參數.
#./configure --with-mysql --with-apxs2=/usr/www/bin/apxs --enable-vld 重新檢查php#make 編譯#make install 安裝
伺服器必須先安裝ZendOptimizer運行Zend後的文件, 查看源代碼就可以看到了

閱讀全文

與php代碼加密解密相關的資料

熱點內容
牆主鋼筋加密和非加密怎麼看 瀏覽:144
金山區文件夾封套定製 瀏覽:708
soho程序員 瀏覽:672
java位元組截取 瀏覽:525
php提交作業 瀏覽:815
房產還沒解壓可以辦理贈予嗎 瀏覽:224
java毫秒轉分鍾 瀏覽:753
模式識別中文pdf 瀏覽:774
c語言平均數字編譯錯誤 瀏覽:170
單片機算交流 瀏覽:45
php自適應網站 瀏覽:467
2b2t伺服器怎麼獲得許可權 瀏覽:816
c語言javaphp 瀏覽:804
程序員技術不分高低嗎 瀏覽:619
dos不是內部或外部命令 瀏覽:709
PC機與單片機通訊 瀏覽:675
二級加密圖 瀏覽:113
壓縮機異音影響製冷嗎 瀏覽:711
德斯蘭壓縮機 瀏覽:490
程序員太極拳視頻 瀏覽:531