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

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

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

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

PHP
  1. <?php 
  2. error_reporting(0);
  3. //加密方法
  4. function pre_encode($method) {
  5.     $key = '123'; //加密密钥
  6.     $enc = openssl_encrypt($method, 'AES-256-CBC', $key, OPENSSL_RAW_DATA);
  7.     return base64_encode($enc);
  8. }
  9. //解密方法
  10. function pre_decode($enc) {
  11.     $key = '123'; //解密密钥
  12.     $dec = openssl_decrypt(base64_decode($enc), 'AES-256-CBC', $key, OPENSSL_RAW_DATA);
  13.     return $dec;
  14. }
  15. //示例用法
  16. $method = '被加密的参数';
  17. $enc = pre_encode($method);
  18. echo '加密后: '.$enc.'<br>';
  19. $dec = pre_decode($enc);
  20. echo '解密后: '.$dec;
  21. ?>

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

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

PHP
  1. <?php 
  2. error_reporting(0);
  3. //加密方法
  4. function pre_encode($data, $key)
  5. {
  6.     $key = md5('123');//加密密钥
  7.     $x = 0;
  8.     $len = strlen($data);
  9.     $l = strlen($key);
  10.     for ($i = 0; $i < $len; $i++)
  11.     {
  12.         if ($x == $l)
  13.         {
  14.             $x = 0;
  15.         }
  16.         $char .= $key{$x};
  17.         $x++;
  18.     }
  19.     for ($i = 0; $i < $len; $i++)
  20.     {
  21.         $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
  22.     }
  23.     return base64_encode($str);
  24. }
  25. //解密方法
  26. function pre_decode($data, $key)
  27. {
  28.     $key = md5('123');//解密密钥
  29.     $x = 0;
  30.     $data = base64_decode($data);
  31.     $len = strlen($data);
  32.     $l = strlen($key);
  33.     for ($i = 0; $i < $len; $i++)
  34.     {
  35.         if ($x == $l)
  36.         {
  37.             $x = 0;
  38.         }
  39.         $char .= substr($key, $x, 1);
  40.         $x++;
  41.     }
  42.     for ($i = 0; $i < $len; $i++)
  43.     {
  44.         if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))
  45.         {
  46.             $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
  47.         }
  48.         else
  49.         {
  50.             $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
  51.         }
  52.     }
  53.     return $str;
  54. }
  55. //示例用法
  56. $data = '被加密的参数';//被加密信息
  57. $encrypt = pre_encode($data, $key);//加密结果
  58. $decrypt = pre_decode($encrypt, $key);//解密结果
  59. echo '加密结果:'.$encrypt.'<br>解密结果:'.$decrypt.'';
  60. ?>

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

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

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

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

小例子一:使用base64封装类

PHP
  1. <?php
  2. error_reporting(0);
  3. //Base64加密
  4. function base64encode($string) {
  5.     $data = base64_encode($string);
  6.     $data = str_replace(array('+', '/', '='), array('-', '_', ''), $data);
  7.     return $data;
  8. }
  9. //Base64解密
  10. function base64decode($string) {
  11.     $data = str_replace(array('-', '_'), array('+', '/'), $string);
  12.     $mod4 = strlen($data) % 4;
  13.     if ($mod4) {
  14.         $data.= substr('====', $mod4);
  15.     }
  16.     return base64_decode($data);
  17. }
  18. //要加密的变量、方法、字符串
  19. //$config = '测试一下';
  20. //加密方法
  21. echo base64encode('$config = '测试一下';');
  22. //解密方法
  23. eval(base64decode('JGNvbmZpZyA9ICfmtYvor5XkuIDkuIsnOw'));
  24. echo $config;
  25. ?>

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

PHP
  1. <?php
  2. error_reporting(0);
  3. // 加密代码 
  4. $Code = '$config = '测试一下';'; 
  5. $encr = base64_encode(gzdeflate($Code)); 
  6. // 解密代码 
  7. $deco = gzinflate(base64_decode($encr)); 
  8. // 执行解密后的代码 
  9. eval($deco); 
  10. echo $config;
  11. ?>

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

对称加密的缺陷

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

Base64加密的优势

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

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

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

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

本文结束

评论专区

发表评论

评论列表(无评论)