文件管理 · 2022年9月29日

php加解密文件|如何把一个PHP文件解密

㈠ 加密的php文件怎么解密

只是用了一些特殊符号作为array的key和function的参数罢了,没啥好研究的,可以直接把这些特殊符号替换成英文就好了

㈡ 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的自动升级功能对其进行升级!

㈢ 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语句,那需要按照同样的方法反复处理。

㈣ php加密文件 解密data 转nsstring 为nil. rc4 ios

IOS:引入ios自带库 #include先以DES加密算法为例讲解,DES的加密和解密都同用一个Key,下面两个加解密函数如下://加密-(NSString *) encryptUseDES:(NSString *)clearText key:(NSString *)key{//一般对加密的字符串采用UTF-8编码 NSData存储的就是二进制数据NSData *data = [clearText dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];//See the doc: For block ciphers, the output size will always be less than or//equal to the input size plus the size of one block.//确定加密过后的字符串在内存中存放的大小,根据文档,对于块密码方式(这个库还包括流密码方式)//加密过后的字符串大小总是小于或等于加密之前数据的大小加上对应加密算法的块大小//但看到一些大牛还这样一下 & ~(kCCBlockSizeDES – 1) 目前不知道为嘛size_t bufferSize = ([data length] + kCCBlockSizeDES) & ~(kCCBlockSizeDES – 1);//void *buffer = malloc(bufferSize);//可以手动创建buffer,但之后要记得free掉unsigned char buffer[bufferSize]; //定义输出加密串所占内存空间memset(buffer, 0, sizeof(char)); //采用ios中宏定义好的方法分配空间,可免去手动freesize_t numBytesEncrypted = 0; //输出加密串的字节数//加密数据,采用库中的CCCrypt方法,这个方法会按次序执行CCCrytorCreate(),// CCCryptorUpdate(), CCCryptorFinal(), and CCCryptorRelease() 如果开发者自己create这个对象,//那么后面就必须执行final、release之类的函数,CCCrypt方法一次性解决// Byte iv[] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};//Byte iv[] = {1,2,3,4,5,6,7,8}; 加密所需的随机字符CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, //加密方式,kCCEncrypt加密 kCCDecrypt解密kCCAlgorithmDES, //采用的加密算法,内置包含AES、DES、//3DES、其他还有四个,不知道是什么//后续讨论//加密额外参数,注意此处各个平台之间指定的时候要记得一样kCCOptionPKCS7Padding | kCCOptionECBMode,[key UTF8String], //加密密匙 UTF8的字符串kCCKeySizeDES, //密匙长度字节 各算法有对应的长度宏nil, //随机字符,可指定也可不指定,各平台之间不绝对[data bytes], //待加密串的字节长度[data length], //待加密串的长度buffer, //输出已加密串的内存地址bufferSize, //已加密串的大小&numBytesEncrypted);NSString* plainText = nil;if (cryptStatus == kCCSuccess) {NSData *dataTemp = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];plainText = [GTMBase64 stringByEncodingData:dataTemp];}else{NSLog(@"DES加密失败");}return plainText;}//解密-(NSString*) decryptUseDES:(NSString*)cipherText key:(NSString*)key {// 利用 GTMBase64 解码 Base64 字串NSData* cipherData = [GTMBase64 decodeString:cipherText];size_t bufferSize = ([cipherData length] + kCCBlockSizeDES) & ~(kCCBlockSizeDES – 1);//unsigned char buffer[1024];unsigned char buffer[bufferSize];memset(buffer, 0, sizeof(char));size_t numBytesDecrypted = 0;// IV 偏移量不需使用CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,kCCAlgorithmDES,kCCOptionPKCS7Padding | kCCOptionECBMode,[key UTF8String],kCCKeySizeDES,nil,[cipherData bytes],[cipherData length],buffer,bufferSize,//1024,&numBytesDecrypted);NSString* plainText = nil;if (cryptStatus == kCCSuccess) {NSData* data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesDecrypted];plainText = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];}return plainText;}java和php平台的代码实现:Java代码 收藏代码import java.io.IOException;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class DES {private byte[] desKey;public DES(String desKey) {this.desKey = desKey.getBytes();}public byte[] desEncrypt(byte[] plainText) throws Exception {SecureRandom sr = new SecureRandom();byte rawKeyData[] = desKey;DESKeySpec dks = new DESKeySpec(rawKeyData);SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey key = keyFactory.generateSecret(dks);Cipher cipher = Cipher.getInstance("DES");cipher.init(Cipher.ENCRYPT_MODE, key, sr);byte data[] = plainText;byte encryptedData[] = cipher.doFinal(data);return encryptedData;}public byte[] desDecrypt(byte[] encryptText) throws Exception {SecureRandom sr = new SecureRandom();byte rawKeyData[] = desKey;DESKeySpec dks = new DESKeySpec(rawKeyData);SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey key = keyFactory.generateSecret(dks);Cipher cipher = Cipher.getInstance("DES");cipher.init(Cipher.DECRYPT_MODE, key, sr);byte encryptedData[] = encryptText;byte decryptedData[] = cipher.doFinal(encryptedData);return decryptedData;}public String encrypt(String input) throws Exception {return base64Encode(desEncrypt(input.getBytes()));}public String decrypt(String input) throws Exception {byte[] result = base64Decode(input);return new String(desDecrypt(result));}public static String base64Encode(byte[] s) {if (s == null)return null;BASE64Encoder b = new sun.misc.BASE64Encoder();return b.encode(s);}public static byte[] base64Decode(String s) throws IOException {if (s == null)return null;BASE64Decoder decoder = new BASE64Decoder();byte[] b = decoder.decodeBuffer(s);return b;}public static void main(String[] args) throws Exception {String key = "abcdefgh";String input = "a";DES crypt = new DES(key);System.out.println("Encode:" + crypt.encrypt(input));System.out.println("Decode:" + crypt.decrypt(crypt.encrypt(input)));}}php 方法一Php代码 收藏代码<?phpclass DES1 {var $key;function DES1($key) {$this->key = $key;}function encrypt($input) {$size = mcrypt_get_block_size('des', 'ecb');$input = $this->pkcs5_pad($input, $size);$key = $this->key;$td = mcrypt_mole_open('des', '', 'ecb', '');$iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);@mcrypt_generic_init($td, $key, $iv);$data = mcrypt_generic($td, $input);mcrypt_generic_deinit($td);mcrypt_mole_close($td);$data = base64_encode($data);return $data;}function decrypt($encrypted) {$encrypted = base64_decode($encrypted);$key =$this->key;$td = mcrypt_mole_open('des','','ecb','');//使用MCRYPT_DES算法,cbc模式$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);$ks = mcrypt_enc_get_key_size($td);@mcrypt_generic_init($td, $key, $iv);//初始处理$decrypted = mdecrypt_generic($td, $encrypted);//解密mcrypt_generic_deinit($td);//结束mcrypt_mole_close($td);$y=$this->pkcs5_unpad($decrypted);return $y;}function pkcs5_pad ($text, $blocksize) {$pad = $blocksize – (strlen($text) % $blocksize);return $text . str_repeat(chr($pad), $pad);}function pkcs5_unpad($text) {$pad = ord($text{strlen($text)-1});if ($pad > strlen($text))return false;if (strspn($text, chr($pad), strlen($text) – $pad) != $pad)return false;return substr($text, 0, -1 * $pad);}}$key = "abcdefgh";$input = "a";$crypt = new DES1($key);echo "Encode:".$crypt->encrypt($input)."<br/>";echo "Decode:".$crypt->decrypt($crypt->encr

㈤ php 加密解密

如果这前后四位数 都是估计的四位,那么就可以实现用一个方法把这个字符串穿进去,然后截取,前面的四位和后面的四位,然后加密好了,再重新拼接好返回即可。

㈥ 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怎样实现对zip文件的加密和解密

使用PHPZip类就可以解决的。以下是网上找到的例子。

$zipfiles=array("/root/pooy/test1.txt","/root/pooy/test2.txt");$z=newPHPZip();//$randomstr=random(8);$zipfile=TEMP."/photocome_".$groupid.".zip";$z->Zip($zipfiles,$zipfile);<?php##PHPZipv1.2bySext([email protected])2002-11-18#(Changed:2003-03-01)##Makesziparchive##Basedon"Zipfilecreationclass",useszLib##classPHPZip{functionZip($dir,$zipfilename){if(@function_exists('gzcompress')){$curdir=getcwd();if(is_array($dir)){$filelist=$dir;}else{$filelist=$this->GetFileList($dir);}if((!empty($dir))&&(!is_array($dir))&&(file_exists($dir)))chdir($dir);elsechdir($curdir);if(count($filelist)>0){foreach($filelistas$filename){if(is_file($filename)){$fd=fopen($filename,"r");$content=fread($fd,filesize($filename));fclose($fd);if(is_array($dir))$filename=basename($filename);$this->addFile($content,$filename);}}$out=$this->file();chdir($curdir);$fp=fopen($zipfilename,"w");fwrite($fp,$out,strlen($out));fclose($fp);}return1;}elsereturn0;}functionGetFileList($dir){if(file_exists($dir)){$args=func_get_args();$pref=$args[1];$dh=opendir($dir);while($files=readdir($dh)){if(($files!=".")&&($files!="..")){if(is_dir($dir.$files)){$curdir=getcwd();chdir($dir.$files);$file=array_merge($file,$this->GetFileList("","$pref$files/"));chdir($curdir);}else$file[]=$pref.$files;}}closedir($dh);}return$file;}var$datasec=array();var$ctrl_dir=array();var$eof_ctrl_dir="x50x4bx05x06x00x00x00x00";var$old_offset=0;/***(date*inhightwobytes,).**@**@**@accessprivate*/functionunix2DosTime($unixtime=0){$timearray=($unixtime==0)?getdate():getdate($unixtime);if($timearray['year']<1980){$timearray['year']=1980;$timearray['mon']=1;$timearray['mday']=1;$timearray['hours']=0;$timearray['minutes']=0;$timearray['seconds']=0;}//endifreturn(($timearray['year']-1980)<<25)|($timearray['mon']<<21)|($timearray['mday']<<16)|($timearray['hours']<<11)|($timearray['minutes']<<5)|($timearray['seconds']>>1);}//endofthe'unix2DosTime()'method/***Adds"file"toarchive**@paramstringfilecontents*@(maycontainsthepath)*@**@accesspublic*/functionaddFile($data,$name,$time=0){$name=str_replace('','/',$name);$dtime=dechex($this->unix2DosTime($time));$hexdtime='x'.$dtime[6].$dtime[7].'x'.$dtime[4].$dtime[5].'x'.$dtime[2].$dtime[3].'x'.$dtime[0].$dtime[1];eval('$hexdtime="'.$hexdtime.'";');$fr="x50x4bx03x04";$fr.="x14x00";//verneededtoextract$fr.="x00x00";//genpurposebitflag$fr.="x08x00";//compressionmethod$fr.=$hexdtime;//lastmodtimeanddate//"localfileheader"segment$unc_len=strlen($data);$crc=crc32($data);$zdata=gzcompress($data);$c_len=strlen($zdata);$zdata=substr(substr($zdata,0,strlen($zdata)-4),2);//fixcrcbug$fr.=pack('V',$crc);//crc32$fr.=pack('V',$c_len);//compressedfilesize$fr.=pack('V',$unc_len);//uncompressedfilesize$fr.=pack('v',strlen($name));//lengthoffilename$fr.=pack('v',0);//extrafieldlength$fr.=$name;//"filedata"segment$fr.=$zdata;//"datadescriptor"segment(//servedasfile)$fr.=pack('V',$crc);//crc32$fr.=pack('V',$c_len);//compressedfilesize$fr.=pack('V',$unc_len);//uncompressedfilesize//addthisentrytoarray$this->datasec[]=$fr;$new_offset=strlen(implode('',$this->datasec));//$cdrec="x50x4bx01x02";$cdrec.="x00x00";//versionmadeby$cdrec.="x14x00";//versionneededtoextract$cdrec.="x00x00";//genpurposebitflag$cdrec.="x08x00";//compressionmethod$cdrec.=$hexdtime;//lastmodtime&date$cdrec.=pack('V',$crc);//crc32$cdrec.=pack('V',$c_len);//compressedfilesize$cdrec.=pack('V',$unc_len);//uncompressedfilesize$cdrec.=pack('v',strlen($name));//lengthoffilename$cdrec.=pack('v',0);//extrafieldlength$cdrec.=pack('v',0);//filecommentlength$cdrec.=pack('v',0);//disknumberstart$cdrec.=pack('v',0);//internalfileattributes$cdrec.=pack('V',32);//externalfileattributes-'archive'bitset$cdrec.=pack('V',$this->old_offset);//relativeoffsetoflocalheader$this->old_offset=$new_offset;$cdrec.=$name;//optionalextrafield,filecommentgoeshere//savetocentraldirectory$this->ctrl_dir[]=$cdrec;}//endofthe'addFile()'method/***Dumpsoutfile**@returnstringthezippedfile**@accesspublic*/functionfile(){$data=implode('',$this->datasec);$ctrldir=implode('',$this->ctrl_dir);return$data.$ctrldir.$this->eof_ctrl_dir.pack('v',sizeof($this->ctrl_dir)).//total#ofentries"onthisdisk"pack('v',sizeof($this->ctrl_dir)).//total#ofentriesoverallpack('V',strlen($ctrldir)).//sizeofcentraldirpack('V',strlen($data)).//offsettostartofcentraldir"x00x00";//.zipfilecommentlength}//endofthe'file()'method}//endofthe'PHPZip'class?>

㈧ 如何把一个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语句,那需要按照同样的方法反复处理。

㈨ 如何对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源码的最简单的加密。如果还有更多不明白可以去后盾人看看相关视频。希望对你有帮助。