怎样给PHP源代码加密?PHP二进制加密与解密的解决办法_php实例
分享2种PHP的源码加密方式,此加密方法支持任意PHP版。
注意,加密后的PHP代码无需第三方工具解密,像往常一样,直接运行即可。
function encode_file_contents($filename) {
$type=strtolower(substr(strrchr($filename,'.'),1));
if ('php' == $type && is_file($filename) && is_writable($filename)) { // 如果是PHP文件 并且可写 则进行压缩编码
$contents = file_get_contents($filename); // 判断文件是否已经被编码处理
$contents = php_strip_whitespace($filename);
// 去除PHP头部和尾部标识
$headerPos = strpos($contents,' $footerPos = strrpos($contents,'?>');
$contents = substr($contents, $headerPos + 5, $footerPos - $headerPos);
$encode = base64_encode(gzdeflate($contents)); // 开始编码
$encode = '";
return file_put_contents($filename, $encode);
}
return false;
}
//调用函数
$filename = 'dam.php';
encode_file_contents($filename);
echo "OK,加密完成!"
?>
加密方式2:
function RandAbc($length = "") { // 返回随机字符串
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
return str_shuffle($str);
}
$filename = 'index.php'; //要加密的文件
$T_k1 = RandAbc(); //随机密匙1
$T_k2 = RandAbc(); //随机密匙2
$vstr = file_get_contents($filename);
$v1 = base64_encode($vstr);
$c = strtr($v1, $T_k1, $T_k2); //根据密匙替换对应字符。
$c = $T_k1.$T_k2.$c;
$q1 = "O00O0O";
$q2 = "O0O000";
$q3 = "O0OO00";
$q4 = "OO0O00";
$q5 = "OO0000";
$q6 = "O00OO0";
$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.'))));').'"));';
$s = '';
//echo $s;
// 生成 加密后的PHP文件
$fpp1 = fopen('temp_'.$filename, 'w');
fwrite($fpp1, $s) or die('写文件错误');
?>
其实,PHP加密源码方式有很多,譬如,免费的微盾PHP加密,还有 www.phpjm.net 搞的在线加密,只是phpjm更复杂点而已。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
另外,分享一个 PHP类,它能对 文本的内容进行 二进制加密 与 解密,代码如下:
class text_auth
{
var $n_iter;
function text_auth()
{
$this->setIter(32);
}
function setIter($n_iter)
{
$this->n_iter = $n_iter;
}
function getIter()
{
return $this->n_iter;
}
function encrypt($data, $key)
{
$n = $this->_resize($data, 4);
$data_long[0] = $n;
$n_data_long = $this->_str2long(1, $data, $data_long);
$n = count($data_long);
if (($n & 1) == 1) {
$data_long[$n] = chr(0);
$n_data_long++;
}
$this->_resize($key, 16, true);
if ( '' == $key )
$key = '0000000000000000';
$n_key_long = $this->_str2long(0, $key, $key_long);
$enc_data = '';
$w = array(0, 0);
$j = 0;
$k = array(0, 0, 0, 0);
for ($i = 0; $i if ($j + 4 $k[0] = $key_long[$j];
$k[1] = $key_long[$j + 1];
$k[2] = $key_long[$j + 2];
$k[3] = $key_long[$j + 3];
} else {
$k[0] = $key_long[$j % $n_key_long];
$k[1] = $key_long[($j + 1) % $n_key_long];
$k[2] = $key_long[($j + 2) % $n_key_long];
$k[3] = $key_long[($j + 3) % $n_key_long];
}
$j = ($j + 4) % $n_key_long;
$this->_encipherLong($data_long[$i], $data_long[++$i], $w, $k);
$enc_data .= $this->_long2str($w[0]);
$enc_data .= $this->_long2str($w[1]);
}
return $enc_data;
}
function decrypt($enc_data, $key)
{
$n_enc_data_long = $this->_str2long(0, $enc_data, $enc_data_long);
$this->_resize($key, 16, true);
if ( '' == $key )
$key = '0000000000000000';
$n_key_long = $this->_str2long(0, $key, $key_long);
$data = '';
$w = array(0, 0);
$j = 0;
$len = 0;
$k = array(0, 0, 0, 0);
$pos = 0;
for ($i = 0; $i if ($j + 4 $k[0] = $key_long[$j];
$k[1] = $key_long[$j + 1];
$k[2] = $key_long[$j + 2];
$k[3] = $key_long[$j + 3];
} else {
$k[0] = $key_long[$j % $n_key_long];
$k[1] = $key_long[($j + 1) % $n_key_long];
$k[2] = $key_long[($j + 2) % $n_key_long];
$k[3] = $key_long[($j + 3) % $n_key_long];
}
$j = ($j + 4) % $n_key_long;
$this->_decipherLong($enc_data_long[$i], $enc_data_long[$i + 1], $w, $k);
if (0 == $i) {
$len = $w[0];
if (4 $data .= $this->_long2str($w[1]);
} else {
$data .= substr($this->_long2str($w[1]), 0, $len % 4);
}
} else {
$pos = ($i - 1) * 4;
if ($pos + 4 $data .= $this->_long2str($w[0]);
if ($pos + 8 $data .= $this->_long2str($w[1]);
} elseif ($pos + 4 $data .= substr($this->_long2str($w[1]), 0, $len % 4);
}
} else {
$data .= substr($this->_long2str($w[0]), 0, $len % 4);
}
}
}
return $data;
}
function _encipherLong($y, $z, &$w, &$k)
{
$sum = (integer) 0;
$delta = 0x9E3779B9;
$n = (integer) $this->n_iter;
while ($n-- > 0) {
$y = $this->_add($y,
$this->_add($z _rshift($z, 5), $z) ^
$this->_add($sum, $k[$sum & 3]));
$sum = $this->_add($sum, $delta);
$z = $this->_add($z,
$this->_add($y _rshift($y, 5), $y) ^
$this->_add($sum, $k[$this->_rshift($sum, 11) & 3]));
}
$w[0] = $y;
$w[1] = $z;
}
function _decipherLong($y, $z, &$w, &$k)
{
$sum = 0xC6EF3720;
$delta = 0x9E3779B9;
$n = (integer) $this->n_iter;
while ($n-- > 0) {
$z = $this->_add($z,
-($this->_add($y _rshift($y, 5), $y) ^
$this->_add($sum, $k[$this->_rshift($sum, 11) & 3])));
$sum = $this->_add($sum, -$delta);
$y = $this->_add($y,
-($this->_add($z _rshift($z, 5), $z) ^
$this->_add($sum, $k[$sum & 3])));
}
$w[0] = $y;
$w[1] = $z;
}
function _resize(&$data, $size, $nonull = false)
{
$n = strlen($data);
$nmod = $n % $size;
if ( 0 == $nmod )
$nmod = $size;
if ($nmod > 0) {
if ($nonull) {
for ($i = $n; $i $data[$i] = $data[$i % $n];
}
} else {
for ($i = $n; $i $data[$i] = chr(0);
}
}
}
return $n;
}
function _hex2bin($str)
{
$len = strlen($str);
return pack('H' . $len, $str);
}
function _str2long($start, &$data, &$data_long)
{
$n = strlen($data);
$tmp = unpack('N*', $data);
$j = $start;
foreach ($tmp as $value)
$data_long[$j++] = $value;
return $j;
}
function _long2str($l)
{
return pack('N', $l);
}
function _rshift($integer, $n)
{
if (0xffffffff $integer) {
$integer = fmod($integer, 0xffffffff + 1);
}
if (0x7fffffff $integer -= 0xffffffff + 1.0;
} elseif (-0x80000000 > $integer) {
$integer += 0xffffffff + 1.0;
}
if (0 > $integer) {
$integer &= 0x7fffffff;
$integer >>= $n;
$integer |= 1 } else {
$integer >>= $n;
}
return $integer;
}
function _add($i1, $i2)
{
$result = 0.0;
foreach (func_get_args() as $value) {
if (0.0 > $value) {
$value -= 1.0 + 0xffffffff;
}
$result += $value;
}
if (0xffffffff $result) {
$result = fmod($result, 0xffffffff + 1);
}
if (0x7fffffff $result -= 0xffffffff + 1.0;
} elseif (-0x80000000 > $result) {
$result += 0xffffffff + 1.0;
}
return $result;
}
}
?>
使用方法参考如下:
// 加密过程
view sourceprint?
$text_file = S_ROOT . './456.php';
$str = @file_get_contents($text_file);
require_once S_ROOT . "./text_auth.php";
$text_auth = new text_auth(64);
$str = $text_auth->encrypt($str, "qianyunlai.com");
$filename = S_ROOT . './789.php'; // 加密后的文本为二进制,普通的文本编辑器无法正常查看
file_put_contents($filename, $str);
// 解密过程
view sourceprint
?01 $text_file = S_ROOT . './789.php';
$str = @file_get_contents($text_file);
require_once S_ROOT . "./text_auth.php";
$text_auth = new text_auth(64);
$str = $text_auth->decrypt($str, "qianyunlai.com");
$filename = S_ROOT . './456.php';
file_put_contents($filename, $str);

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP是一种流行的服务器端编程语言,广泛用于Web应用程序开发中。在实际应用中,PHP加密解密是非常常见的操作。本文将介绍PHP中常见的加密解密方法,以及常见问题的解决方案。一、加密方法1.对称加密法(SymmetricCryptography)对称加密法是加密技术中应用最广泛的一种方法。该方法使用相同的密钥对数据进行加密和解密。在PHP中,常用的对称加密

使用PHP数组实现数据加密和解密的方法和技巧摘要:数据加密在信息安全中扮演着重要的角色。本文将介绍使用PHP数组实现数据加密和解密的方法和技巧,以便保护敏感信息的安全。引言在现代社会,网络安全问题日益引起人们的关注。为了保护敏感信息的安全,数据加密是一种常用的方式。PHP数组是一种强大而灵活的数据结构,可以用于存储和操作数据。通过将敏感数据存储在PHP数组中

随着网络技术的不断发展,数据安全性越来越受到人们的关注。在这个信息化时代,PHP作为一种广泛应用的编程语言,也面临着数据安全问题。本文会给大家介绍如何使用PHP实现数据加密、解密以及传输,保障数据安全性。一、数据加密数据加密是指对原始数据进行处理,使其变成一段看似随机的字符,以达到对原始数据的保护的一种技术。加密分单向加密和对称加密。单向加密指只能进行加密操

如何利用PHP加密技术来保护注册过程,防止被刷注册在今天的互联网时代,注册系统已经成为了任何一个网站的基本功能。然而,由于网络的开放性和自由访问性,一些不法分子常常利用自动化脚本进行恶意注册,给网站的正常运营带来了麻烦。因此,保护注册过程并防止被刷注册成为了非常重要的任务。为了保护注册过程,并防止被刷注册,我们可以利用PHP加密技术来增强注册系统的安全性。下

随着网络技术的普及,网络安全问题已经成为了人们越来越关注的话题,加密与解密技术也因此而备受关注。在PHP编程中,加密与解密技术是非常重要的一部分,它可以帮助我们保证数据的安全性,防止数据被盗取和恶意攻击。本文将介绍PHP中常用的加密与解密算法以及解决方案。一、加密与解密技术的作用在网络中,数据的传输往往会遇到很多不安全的情况,例如数据被不法之徒拦截、篡改、窃

随着网络技术的不断发展,越来越多的网站和应用程序对于数据传输安全性的需求越来越高。特别是对于涉及到敏感信息的网站和应用,如何使用PHP保护数据传输安全性是至关重要的。本文将介绍一些PHP保护数据传输安全性的方法。一、使用HTTPS协议HTTPS是一种基于TLS/SSL协议来实现数据传输安全的HTTP协议。使用HTTPS协议能够保证客户端与服务器之间的信息传输

PHP中的安全敏感数据加解密技术解析随着互联网的发展,数据安全成为了一个重要的议题。对于网站开发者来说,如何保护用户的敏感数据显得尤为重要。在PHP中,我们可以使用各种加解密技术来保护敏感数据,本文将对PHP中的安全敏感数据加解密技术进行深入解析。一、加密的基本原理加密是将明文转化成密文的过程,密文只有掌握密钥的人才能解密还原成明文。在PHP中,常见的加密方

在Web开发中,安全一直是最重要的问题之一。密钥的泄漏、数据的篡改和窃取等风险一直存在,因此,保护数据的安全性就显得尤为重要。为了保证数据的安全性,我们通常采用加密和解密的方式来进行数据处理。在PHP中,加密和解密也是很重要的一部分。一、PHP中的加密方式在PHP中,加密有很多种方式,下面我们将介绍几种常用的加密方式。md5加密md5是一种常用的加密方式。它
