正在读取数据,页面载入中,请稍后...

有可逆转的对称加密方法,连PHP的Base64加密都不香了

听君一席话,胜读十年书,作为一个程序员,代码加密需要有,代码加密也不能没有。网站的安全,不在于程序,而在于站长,没有没有漏洞的程序,只有懒到极致的站长。

你是不是,还在使用PHP自带的base64_encode(加密)和base64_decode(解密)啊!可逆转的加密方式,还不如试试这些,没有加密秘钥,别人一辈子都解密不了的对称加密方式。废话少说,直接上案例。

案例一:OpenSSL加密(可逆转)

<?php 
error_reporting(0);
//加密方法
function pre_encode($method) {
    $key = '123'; //加密密钥
    $enc = openssl_encrypt($method, 'AES-256-CBC', $key, OPENSSL_RAW_DATA);
    return base64_encode($enc);
}
//解密方法
function pre_decode($enc) {
    $key = '123'; //解密密钥
    $dec = openssl_decrypt(base64_decode($enc), 'AES-256-CBC', $key, OPENSSL_RAW_DATA);
    return $dec;
}
//示例用法
$method = '被加密的参数';
$enc = pre_encode($method);
echo '加密后: '.$enc.'<br>';
$dec = pre_decode($enc);
echo '解密后: '.$dec;
?>

加密的链接,加密的参数,没有秘钥,就很难破解,又不是黑客,哪里有那么多黑科技啊!

案例二:不知道叫啥加密(可逆转)

<?php 
error_reporting(0);
//加密方法
function pre_encode($data, $key)
{
    $key = md5('123');//加密密钥
    $x = 0;
    $len = strlen($data);
    $l = strlen($key);
    for ($i = 0; $i < $len; $i++)
    {
        if ($x == $l)
        {
            $x = 0;
        }
        $char .= $key{$x};
        $x++;
    }
    for ($i = 0; $i < $len; $i++)
    {
        $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
    }
    return base64_encode($str);
}
//解密方法
function pre_decode($data, $key)
{
    $key = md5('123');//解密密钥
    $x = 0;
    $data = base64_decode($data);
    $len = strlen($data);
    $l = strlen($key);
    for ($i = 0; $i < $len; $i++)
    {
        if ($x == $l)
        {
            $x = 0;
        }
        $char .= substr($key, $x, 1);
        $x++;
    }
    for ($i = 0; $i < $len; $i++)
    {
        if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))
        {
            $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
        }
        else
        {
            $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
        }
    }
    return $str;
}
//示例用法
$data = '被加密的参数';//被加密信息
$encrypt = pre_encode($data, $key);//加密结果
$decrypt = pre_decode($encrypt, $key);//解密结果
echo '加密结果:'.$encrypt.'<br>解密结果:'.$decrypt.'';
?>

有可逆转的对称加密方法,连PHP的Base64加密都不香了 - 全民博客

网上还有很多版本,和上面的对称加密一样,我也不知道叫啥加密,没有秘钥就很难破解,不要老听别人说,对称加密不安全。我信你个鬼,这家伙坏的很,不希望别人用,别人用了以后,看得见解不了,能看能贴不能用,就想问你气不气,对有强迫症的人来说,心生忐忑,破解不了就不安全,加密的东西用得也不安心,你先把这个超级简单的加密方式破解再说。

案例三:PHP自带Base64函数(可逆转)

<?php 
error_reporting(0);
echo base64_encode('是加密函数').'<br>';//加密
echo base64_decode('5piv5Yqg5a+G5Ye95pWw');//解密
?>

PHP自带的Base64函数,base64_encode(是加密函数)和base64_decode(是解密函数)!没啥好说的,连封装都不需要。连变量都能加密,下面附上简单的例子。

小例子一:使用base64封装类

<?php
error_reporting(0);
//Base64加密
function base64encode($string) {
    $data = base64_encode($string);
    $data = str_replace(array('+', '/', '='), array('-', '_', ''), $data);
    return $data;
}
//Base64解密
function base64decode($string) {
    $data = str_replace(array('-', '_'), array('+', '/'), $string);
    $mod4 = strlen($data) % 4;
    if ($mod4) {
        $data.= substr('====', $mod4);
    }
    return base64_decode($data);
}
//要加密的变量、方法、字符串
//$config = '测试一下';
//加密方法
echo base64encode('$config = '测试一下';');
//解密方法
eval(base64decode('JGNvbmZpZyA9ICfmtYvor5XkuIDkuIsnOw'));
echo $config;
?>

小例子二:使用自带函数加密

<?php
error_reporting(0);
// 加密代码 
$Code = '$config = '测试一下';'; 
$encr = base64_encode(gzdeflate($Code)); 
// 解密代码 
$deco = gzinflate(base64_decode($encr)); 
// 执行解密后的代码 
eval($deco); 
echo $config;
?>

如你所见,使用base64加密和加密,都是可以直接解密的,复制就能解密了,毫无隐蔽性可言,而且eval函数就是木马的代名词,就是木马、后门、漏洞的意思,能够直接控制要执行的代码。

对称加密的缺陷

如你所见,对称加密,加密只能加密参数,不能加密变量、方法、函数等,总的来说,就是只能加密某个字符串,你想把某个字符串加密,就可以使用这种对称的加密方式,在A文件加密,在B文件也可以解密,只有加密秘钥对,任何地方均可解密,这些就是对称加密唯一的缺陷。

Base64加密的优势

和你想的一样,Base64加密与对称加密正好相反,Base64加密不仅仅只能加密字符串,还能加密变量、方法、函数等,总的来说,你把PHP文件里面的变量、方法、函数等全部都用Base64加密都行,这种加密可以解密,而且毫无技术含量,就像脱裤子放屁一样,还不如找个没人的地方出气。

当然,除了上面的加密解密方法,还有很多的PHP加密方法,找到适合自己的就是最佳的加密方法,上面的只是某个字段和字符串加密,要是你想整个PHP文件加密,那就得要使用PHP加密工具了。

在我们使用的程序中,无论是开源的,还是非开源的,都得要有点常识,代码技术是无罪的。当PHP版本需要安装SG11拓展的,你可以理解为,这个程序是全加密、半加密、半开源、非开源的程序。字面意思就是,可能存在木马、后门、漏洞等,安装使用需谨慎,网站上线会被按头,不要等到被按头了,才大喊冤枉啊,我啥都没做我不知道啊。

本文结束

评论专区

发表评论

评论列表(无评论)