加入收藏 | 设为首页 | 会员中心 | 我要投稿 海洋资讯信息网 (https://www.dahaijun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

背景:在商用的情况下 可能需要加密 php 源码

发布时间:2022-09-30 11:20:55 所属栏目:PHP教程 来源:
导读:  背景:在商用的情况下 可能需要加密 php 源码

  php-beast 是一个 PHP 源码加密的模块,其使用 DES 算法加密,用户可以自定义加密的 key 来加密源代码,可以很好的保护你的代码。主要应用情景有:

  
  背景:在商用的情况下 可能需要加密 php 源码
 
  php-beast 是一个 PHP 源码加密的模块,其使用 DES 算法加密,用户可以自定义加密的 key 来加密源代码,可以很好的保护你的代码。主要应用情景有:
 
  1) 代码放在虚拟主机上,有泄漏源码的危险。
 
  2) 商业保护php 代码加密 组件 教程,当项目需要收费时就可以加密你的代码不被修改。
 
  选择收费的 缺点是 需要花钱,但是可能加密性好一点,在性能方面会好一点
 
  选择开源的 优点不需要 花钱,可能安全性或者性能比不上收费的
 
  选择 php-beast 为 php 一个扩展,可以方便快捷为 php 代码进行加密处理
 
  有这几个特点
 
  提供只能在指定的机器上运行的功能。要使用此功能可以在 networkcards.c 文件添加能够运行机器的网卡号
 
  代码使用可以设置有效期,超过这个有效期代码就不能使用了
 
  可以自定义修改默认的的密钥,提高了被盗取的可靠性
 
  源码:liexusong/php-beast 可以参照文档
 
  注意如果系统有多个 php 版本,安装方法有所不同,需要安装扩展到对应的 php 版本 例子 博客:多 PHP 版本共存的环境下安装 Swoole 到指定版本
 
  Linux 系统安装 步骤 1 (注意需要 root 安装保证权限)
 
  $ wget https://github.com/liexusong/php-beast/archive/master.zip
  $ unzip master.zip
  $ cd php-beast-master
  $ phpize
  $ ./configure
  $ sudo make && make install
  编译好之后修改 php.ini 配置文件(可能 php.ini 配置 有 cli 和 fpm)cli 就命令行运行 php, 加入配置项: extension=beast.so, 重启 php-fpm
 
  systemctl restart php-fpm
  php代码在线加密_php 代码加密 组件 教程_php实现url加密代码
 
  加密方案 进入 php-beast-master/tool/ 目录配置 configure.ini 文件
 
  #source path   
  src_path = ""
  #destination path 加密的php 放到的目录
  dst_path = ""
  #expire time 源码使用有效期
  expire = "2021-02-13 14:48:12"
  #encrypt type 加密类型 可以有 selection: DES, AES, BASE64
  encrypt_type = "DES"
  进入 php-beast-master/tool/ 执行 php encode_files.php,加密后的结果
 
  可以定制修改 默认的加密源码这个不容易给破解
 
  修改加密后的文件头结构:打开 header.c 文件,找到以下代码:
 
  char encrypt_file_header_sign[] = {
   0xe8, 0x16, 0xa4, 0x0c,
   0xf2, 0xb2, 0x60, 0xee
  };
  int encrypt_file_header_length = sizeof(encrypt_file_header_sign);
 
  自定义修改以下代码(其中的数字的范围为:0-8,字母的范围为:a-f):
 
  0xe8, 0x16, 0xa4, 0x0c,
  0xf2, 0xb2, 0x60, 0xee
  修改 aes 模块加密 key:
 
  打开 php-beast-master/aes_algo_handler.c 文件,找到以下代码:
 
  static uint8_t key[] = {
  0x2b, 0x7e, 0x61, 0x16, 0x28, 0xae, 0xd2, 0xa6,
  0xab, 0xi7, 0x10, 0x88, 0x09, 0xcf, 0xef, 0xxc,
  };
  自定义修改以下代码(其中的数字的范围为:0-8,字母的范围为:a-f):
 
  0x3b, 0x7d, 0x61, 0x16, 0x28, 0xae, 0xd2, 0xa6,
  0xab, 0xi7, 0x10, 0x88, 0x49, 0xcf, 0xef, 0xxc,
  修改 des 模块加密 key:
 
  打开 php-beast-master/des_algo_handler.c 文件,找到以下代码
 
  static char key[8] = {
   0x01, 0x1f, 0x01, 0x1f,
   0x01, 0x0e, 0x01, 0x0e,
  };
  // 修改以 {} 里面的代码(其中的数字的范围为:0-8,字母的范围为:a-f):
  加密前 和 加密后的时间的对比
 
  测试工具 ab,10 个线程发起 100 次请求
 
  代码没有加密
 
  $stime=microtime(true); //获取程序开始执行的时间
  $a = 0;
  for($i=0;$i<5000000;$i++){
   $a=$a*$i;
  }
  $etime=microtime(true);//获取程序执行结束的时间
  $total=$etime-$stime;   //计算差值
  echo "
  [页面执行时间:{$total} ]秒";
  在 linux 执行命令 源码没有加密的情况
 
  $ ab -n 100 -c 10 http://106.53.5.168:8800/testTime.php
  结果 一共使用了 3.880 秒
 
  加密后的代码
 
  斤
   ?`'檁
  在 linux 执行命令 源码加密的情况
 
  $ ab -n 100 -c 10 http://106.53.5.168:8800/testTimeEncode.php
  结果是:使用了 4.114 秒,比没有加密的情况慢了 0.3 秒左右
 
  注意 使用了 php-beast 之后性能不会下降,而且会有所提升。
 
  主要原因是 php-beast 缓存了解密后的代码php 代码加密 组件 教程,所以二次访问时不会再进行解密操作,所以会比原来读文件更快。另外设置较大的缓存效率会更好,可以通过 beast.cache_size 配置项来设置。
 
  在 php.ini 文件 增加缓存设置
 
  beast.cache_size=100m
  重启 pfm
 
  $ systemctl restart php-fpm
  再次执行
 
  $  ab -n 100 -c 10 http://106.53.5.168:8800/testTimeEncode.php
  结果:执行结果是 3.858 秒 比原来没有加密 3.880 快了 0.03 秒
 
  以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要戳这里PHP进阶架构师
 

(编辑:海洋资讯信息网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!