加密解密php
看是怎麼加密的了,MD5是解不了的說能解的都是自己做的資料庫匹配。
下面這個是常用的加密解密方法
<?php
/**
*字元串加密、解密函數
*
*@paramstring$txt字元串
*@paramstring$operationENCODE為加密,DECODE為解密,可選參數,默認為ENCODE,
*@paramstring$key密鑰:數字、字母、下劃線
*@paramstring$expiry過期時間
*@returnstring
*/
functionsys_auth($string,$operation='ENCODE',$key='',$expiry=0){
$ckey_length=4;
$key=md5($key!=''?$key:C('COOKIE_AUTH_KEY'));
$keya=md5(substr($key,0,16));
$keyb=md5(substr($key,16,16));
$keyc=$ckey_length?($operation=='DECODE'?substr($string,0,$ckey_length):substr(md5(microtime()),-$ckey_length)):'';
$cryptkey=$keya.md5($keya.$keyc);
$key_length=strlen($cryptkey);
$string=$operation=='DECODE'?base64_decode(strtr(substr($string,$ckey_length),'-_','+/')):sprintf('%010d',$expiry?$expiry+time():0).substr(md5($string.$keyb),0,16).$string;
$string_length=strlen($string);
$result='';
$box=range(0,255);
$rndkey=array();
for($i=0;$i<=255;$i++){
$rndkey[$i]=ord($cryptkey[$i%$key_length]);
}
for($j=$i=0;$i<256;$i++){
$j=($j+$box[$i]+$rndkey[$i])%256;
$tmp=$box[$i];
$box[$i]=$box[$j];
$box[$j]=$tmp;
}
for($a=$j=$i=0;$i<$string_length;$i++){
$a=($a+1)%256;
$j=($j+$box[$a])%256;
$tmp=$box[$a];
$box[$a]=$box[$j];
$box[$j]=$tmp;
$result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));
}
if($operation=='DECODE'){
if((substr($result,0,10)==0||substr($result,0,10)-time()>0)&&substr($result,10,16)==substr(md5(substr($result,26).$keyb),0,16)){
returnsubstr($result,26);
}else{
return'';
}
}else{
return$keyc.rtrim(strtr(base64_encode($result),'+/','-_'),'=');
}
}
?>
㈡ php源代碼被加密了,請問如何解密
php源碼被使用zend加密,現階段還沒用解密方法。但是好像現在有這樣的一個studio,他們成功地完成了zend和eac的decode
不過是收費的
㈢ 加密的php文件怎麼解密
只是用了一些特殊符號作為array的key和function的參數罷了,沒啥好研究的,可以直接把這些特殊符號替換成英文就好了
㈣ php 加密解密
如果這前後四位數 都是估計的四位,那麼就可以實現用一個方法
把這個字元串穿進去,
然後截取,前面的四位和後面的四位,
然後加密好了,再重新拼接好返回即可。
㈤ 請教php源碼加密及解密問題
用dw編輯器自帶的加密工具,或者自己寫js加密解密腳本
㈥ 如何加密解密php源代碼
用Zend的加密吧,但是還是可以解密的,這也沒辦法,凡是對稱加密或非不可逆的加密演算法,均可以解密,這只是時間問題。特別是沒有密碼的加密(不可逆除外)。可以這樣,使用AES加密,再用GZIP壓縮,然後運行時解密,在eval那些代碼。前提是每個加密的文件的密碼都不同,要購買才可以解密運行。
㈦ 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代碼加密怎麼解密
$key="Thisissupposedtobeasecretkey!!!";
functionkeyED($txt,$encrypt_key)
{
$encrypt_key=md5($encrypt_key);
$ctr=0;
$tmp="";
for($i=0;$i<strlen($txt);$i++){
if($ctr==strlen($encrypt_key))$ctr=0;
$tmp.=substr($txt,$i,1)^substr($encrypt_key,$ctr,1);
$ctr++;
}
return$tmp;
}
functionencrypt($txt,$key)
{
srand((double)microtime()*1000000);
$encrypt_key=md5(rand(0,32000));
$ctr=0;
$tmp="";
for($i=0;$i<strlen($txt);$i++){
if($ctr==strlen($encrypt_key))$ctr=0;
$tmp.=substr($encrypt_key,$ctr,1).
(substr($txt,$i,1)^substr($encrypt_key,$ctr,1));
$ctr++;
}
returnkeyED($tmp,$key);
}
functiondecrypt($txt,$key)
{
$txt=keyED($txt,$key);
$tmp="";
for($i=0;$i<strlen($txt);$i++){
$md5=substr($txt,$i,1);
$i++;
$tmp.=(substr($txt,$i,1)^$md5);
}
return$tmp;
}
$string="HelloWorld!!!";
//encrypt$string,andstoreitin$enc_text
$enc_text=encrypt($string,$key);
//decrypttheencryptedtext$enc_text,andstoreitin$dec_text
$dec_text=decrypt($enc_text,$key);
//加密
functionstr2hex($s)
{
$r="";
$hexes=array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
for($i=0;$i<strlen($s);$i++)=""$r.=($hexes[(ord($s{$i})>>4)].$hexes[(ord($s{$i})&0xf)]);
return$r;
}
//解密
functionhex2str($s)
{
$r="";
for($i=0;$i<strlen($s);$i=""+="2)"{
$x1=ord($s{$i});
$x1=($x1>=48&&$x1<58)?$x1-48:$x1-97+10;
$x2=ord($s{$i+1});
$x2=($x2>=48&&$x2<58)?$x2-48:$x2-97+10;
$r.=chr((($x1<<4)&0xf0)|($x2&0x0f));
}
return$r;
}
echostr2hex("山東");
echo"
";
echohex2str("c9bdb6ab");
?>
㈨ 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文件被加密怎麼破解
可以用黑刀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的自動升級功能對其進行升級!