您好,欢迎访问一九零五行业门户网

php加密与解密的方法

测试文件
test.php
986eff599698be1107686c632aa0ae4c
1.加密方法:
a9163c158ff6acbe4fd1a93dd7b5f670 abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz 长度 $q1 .= 64_decode -> base64_decode*/$s = '$' . $q6 . '=urldecode(%6e1%7a%62%2f%6d%615%5c%76%740%6928%2d%70%78%75%71%79%2a6%6c%72%6b%64%679%5f%65%68%63%73%77%6f4%2b%6637%6a); $' . $q1 . '=$' . $q6 . '{3}.$' . $q6 . '{6}.$' . $q6 . '{33}.$' . $q6 . '{30}; $' . $q3 . '=$' . $q6 . '{33}.$' . $q6 . '{10}.$' . $q6 . '{24}.$' . $q6 . '{10}.$' . $q6 . '{24}; $' . $q4 . '=$' . $q3 . '{0}.$' . $q6 . '{18}.$' . $q6 . '{3}.$' . $q3 . '{0}.$' . $q3 . '{1}.$' . $q6 . '{24}; $' . $q5 . '=$' . $q6 . '{7}.$' . $q6 . '{13}; $' . $q1 . '.=$' . $q6 . '{22}.$' . $q6 . '{36}.$' . $q6 . '{29}.$' . $q6 . '{26}.$' . $q6 . '{30}.$' . $q6 . '{32}.$' . $q6 . '{35}.$' . $q6 . '{26}.$' . $q6 . '{30}; eval($' . $q1 . '(' . base64_encode('$' . $q2 . '=' . $c . ';eval(\'?>\'.$' . $q1 . '($' . $q3 . '($' . $q4 . '($' . $q2 . ',$' . $q5 . '*2),$' . $q4 . '($' . $q2 . ',$' . $q5 . ',$' . $q5 . '),$' . $q4 . '($' . $q2 . ',0,$' . $q5 . '))));') . '));';echo $s;file_put_contents('./test_encode.php', '71d31b5c01f8faf2a1a6b1423e62a04e');?>
运行加密后生成test_encode.php文件
<?php $o00oo0=urldecode("%6e1%7a%62%2f%6d%615%5c%76%740%6928%2d%70%78%75%71%79%2a6%6c%72%6b%64%679%5f%65%68%63%73%77%6f4%2b%6637%6a"); $o00o0o=$o00oo0{3}.$o00oo0{6}.$o00oo0{33}.$o00oo0{30}; $o0oo00=$o00oo0{33}.$o00oo0{10}.$o00oo0{24}.$o00oo0{10}.$o00oo0{24}; $oo0o00=$o0oo00{0}.$o00oo0{18}.$o00oo0{3}.$o0oo00{0}.$o0oo00{1}.$o00oo0{24}; $oo0000=$o00oo0{7}.$o00oo0{13}; $o00o0o.=$o00oo0{22}.$o00oo0{36}.$o00oo0{29}.$o00oo0{26}.$o00oo0{30}.$o00oo0{32}.$o00oo0{35}.$o00oo0{26}.$o00oo0{30}; eval($o00o0o("je8wtzawmd0itghxqk16qw5zc29qulvmsvhkzvbgsff2q2fwrwtovfphy2lxdwxtymdkclz5s3r3rfnpeer2z2pick1mt1hrexvhafltvw5fcff3b1b0y2llq2vstkhkwlzhvelgc0fmegxxv3ptskjfejlxdffnq1bktuzzugphtzj2b1lqvwtswkjysxhqm0kzvvhsudrkslcwbfl6oct6d2s9ijtldmfskcc/picuje8wme8wtygktzbptzawkcrptzbpmdaoje8wtzawmcwkt08wmdawkjiplcrptzbpmdaoje8wtzawmcwkt08wmdawlcrptzawmdaplcrptzbpmdaoje8wtzawmcwwlcrptzawmdapkskpow==")); ?>
解析
<?php // 所有的$o00oo等等都是变量!!! /* 将 %6e1%7a%62%2f%6d%615%5c%76%740%6928%2d%70%78%75%71%79%2a6%6c%72%6b%64%679%5f%65%68%63%73%77%6f4%2b%6637%6 解码成 n1zb/ma5\vt0i28-pxuqy*6lrkdg9_ehcswo4+f37j 并赋值给$o00oo0 */ $o00oo0=urldecode("%6e1%7a%62%2f%6d%615%5c%76%740%6928%2d%70%78%75%71%79%2a6%6c%72%6b%64%679%5f%65%68%63%73%77%6f4%2b%6637%6a"); // 从$o00oo0及其他变量字符串中获取对应字符后组成新的字符串,并赋值给对应的变量 // 例如 $o00oo0{3} 代表 n1zb/ma5\vt0i28-pxuqy*6lrkdg9_ehcswo4+f37j 字符串中的第三个字符,b // $o00o0o = "base" $o00o0o=$o00oo0{3}.$o00oo0{6}.$o00oo0{33}.$o00oo0{30}; // $o0oo00 = "strtr" $o0oo00=$o00oo0{33}.$o00oo0{10}.$o00oo0{24}.$o00oo0{10}.$o00oo0{24}; // $oo0o00 = "substr" $oo0o00=$o0oo00{0}.$o00oo0{18}.$o00oo0{3}.$o0oo00{0}.$o0oo00{1}.$o00oo0{24}; // $oo0000 = "52" $oo0000=$o00oo0{7}.$o00oo0{13}; // $o00o0o = "base64_decode" $o00o0o.=$o00oo0{22}.$o00oo0{36}.$o00oo0{29}.$o00oo0{26}.$o00oo0{30}.$o00oo0{32}.$o00oo0{35}.$o00oo0{26}.$o00oo0{30}; // 之后通过eval执行php代码 eval($o00o0o("je8wtzawmd0itghxqk16qw5zc29qulvmsvhkzvbgsff2q2fwrwtovfphy2lxdwxtymdkclz5s3r3rfnpeer2z2pick1mt1hrexvhafltvw5fcff3b1b0y2llq2vstkhkwlzhvelgc0fmegxxv3ptskjfejlxdffnq1bktuzzugphtzj2b1lqvwtswkjysxhqm0kzvvhsudrkslcwbfl6oct6d2s9ijtldmfskcc/picuje8wme8wtygktzbptzawkcrptzbpmdaoje8wtzawmcwkt08wmdawkjiplcrptzbpmdaoje8wtzawmcwkt08wmdawlcrptzawmdaplcrptzbpmdaoje8wtzawmcwwlcrptzawmdapkskpow==")); /* eval会执行后面的php代码 第一步为解码 $o00o0o 为 "base64_decode"。 即对后面的字符串进行base64解码 je8wtzawmd0itghxqk16qw5zc29qulvmsvhkzvbgsff2q2fwrwtovfphy2lxdwxtymdkclz5s3r3rfnpeer2z2pick1mt1hrexvhafltvw5fcff3b1b0y2llq2vstkhkwlzhvelgc0fmegxxv3ptskjfejlxdffnq1bktuzzugphtzj2b1lqvwtswkjysxhqm0kzvvhsudrkslcwbfl6oct6d2s9ijtldmfskcc/picuje8wme8wtygktzbptzawkcrptzbpmdaoje8wtzawmcwkt08wmdawkjiplcrptzbpmdaoje8wtzawmcwkt08wmdawlcrptzawmdaplcrptzbpmdaoje8wtzawmcwwlcrptzawmdapkskpow== 解码后 $o0o000="lhqbmzanysojrufixjepfhqvcapekntzgciwulmbgdrvyktwdsoxdvgjbrmfoxkyughysunepqwoptcikcernhdzvatifsalxlqwzmjbez9wtqmcpdmfypjao2voypukrzbxixj3i3uxrp4djw0lyz8+zwk="; eval('?>'.$o00o0o($o0oo00($oo0o00($o0o000,$oo0000*2),$oo0o00($o0o000,$oo0000,$oo0000),$oo0o00($o0o000,0,$oo0000)))); 第二步是执行解码后的代码 解码后为另外一份代码,根据加密算法可知$o0o000变量的值为密钥1+密钥2+源代码编码并进行替换后的字符串, 这边先将替换掉的字符串还原回去,之后再进行base64_decode进行解码,即可获得原来的代码!!! 注意:由于源代码已经包含<?php ?>,所以这边必须加入'?>' */ ?>
2.解密方法
<?php // 加密的文件格式必须固定!! /*$o00oo0=urldecode("%6e1%7a%62%2f%6d%615%5c%76%740%6928%2d%70%78%75%71%79%2a6%6c%72%6b%64%679%5f%65%68%63%73%77%6f4%2b%6637%6a"); $o00o0o=$o00oo0{3}.$o00oo0{6}.$o00oo0{33}.$o00oo0{30}; $o0oo00=$o00oo0{33}.$o00oo0{10}.$o00oo0{24}.$o00oo0{10}.$o00oo0{24}; $oo0o00=$o0oo00{0}.$o00oo0{18}.$o00oo0{3}.$o0oo00{0}.$o0oo00{1}.$o00oo0{24}; $oo0000=$o00oo0{7}.$o00oo0{13}; $o00o0o.=$o00oo0{22}.$o00oo0{36}.$o00oo0{29}.$o00oo0{26}.$o00oo0{30}.$o00oo0{32}.$o00oo0{35}.$o00oo0{26}.$o00oo0{30}; eval($o00o0o("je8wtzawmd0itmv5selcamzrdk......1uyvnuuupny21uyvvooctotm89ijtldmfskcc/=="));?>*/ // 要解密的文件,去掉php标识 $encode_sourcecode = file_get_contents("./test_e.php"); $encode_sourcecode = str_replace('<?php','', $encode_sourcecode); $encode_sourcecode = str_replace('?>','', $encode_sourcecode); // 提取第一次需要解密的内容 // 即je8wtzawmd0itmv5selcamzrdk......1uyvnuuupny21uyvvooctotm89ijtldmfskcc/==echo '</br></br>------------------------------$encode_sourcecode_content</br>'; $start = strripos($encode_sourcecode, '("') + 2;$end = strripos($encode_sourcecode, '")'); $encode_sourcecode_content = substr($encode_sourcecode, $start, $end - $start); echo $encode_sourcecode_content;// 解密加密部分的代码后的内容 // $o0o000="neyhibjfqvdmwo......josptgmdl3m3jgskqtib0nuh8+hno="; eval('......oo0000)))); echo '</br></br>------------------------------$decode_sourcecode_content</br>';$decode_sourcecode_content = base64_decode($encode_sourcecode_content); echo $decode_sourcecode_content; // 解密后还是一个加密的代码,需要再次解码,所以要再次提取需要被解密的内容出来 // 即neyhibjfqvdmwo......josptgmdl3m3jgskqtib0nuh8+hno=echo '</br></br>------------------------------$decode_sourcecode_content_encode_content</br>'; $start = stripos($decode_sourcecode_content, '"') + 1;$end = strripos($decode_sourcecode_content, '"') ; $decode_sourcecode_content_encode_content = substr($decode_sourcecode_content, $start, $end - $start); echo $decode_sourcecode_content_encode_content;// 根据加密规则,替换字符并解码,即可得到原文件echo '</br></br>------------------------------$decode_sourcecode_content_encode_content</br>'; $origin_content = base64_decode(strtr(substr($decode_sourcecode_content_encode_content, 104),substr($decode_sourcecode_content_encode_content, 52, 52),substr($decode_sourcecode_content_encode_content, 0, 52))); var_dump($origin_content); file_put_contents('./test_origin.php', $origin_content); ?>
以上就是php加密与解密的方法的详细内容。
其它类似信息

推荐信息