Z-Blog Wiki Z-Blog Wiki

Z-Blog官方文库

用户工具

站点工具


appcenter:encrypt

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
appcenter:encrypt [2019/01/29 01:36]
zsx [优势]
appcenter:encrypt [2019/03/19 14:12] (当前版本)
zsx
行 5: 行 5:
 目前处于内测状态,Z-Blog应用中心开发者可暂时免费使用。 目前处于内测状态,Z-Blog应用中心开发者可暂时免费使用。
  
-===== 特性 ===== +介绍页已移动至:https://z5encrypt.com/docs/
-1. 使用虚拟机执行字节码。 +
- +
-2. 最大限度保留PHP的有关态功能。 +
- +
-3. 最低支持PHP 5.2。 +
- +
-4. 无需扩展。 +
- +
-5. 如果你的PHP文件是一个Z-BlogPHP应用的组成部分,且这个应用上架到了Z-Blog应用中心,那么,用户的每次下载,都会自动触发加密,让每一个用户下载到的文件都完全不同。 +
- +
-==== 优势 ==== +
- +
-传统的加密,有几种形式 +
- +
-1. 混淆型“加密”:只是将变量名修改了一下,更换一个可以修改变量名的文本编辑器即可编辑,对于反破解几乎没有帮助。 +
- +
-2. 预先加密:直接把源代码进行加密,运行时解密源码后进行eval以实现“加密”效果。通过Hook eval,或者Hook Zend的编译入口 ``zend_compile_string`` 即可得到源码,甚至没有混淆型来得有用。 +
- +
-3. 扩展加密:通过各种编译手段将PHP代码编译为不可识别的代码,但需要服务器加装特定扩展。 +
- +
-Z5加密综合了123三种加密形式。其将PHP源码编译成难以还原成源码的字节码,之后通过PHP实现的虚拟机来对字节码进行运行,从根本上杜绝了被通用解密手段所破解,并且不需要服务器安装特定的扩展。 +
- +
-==== 劣势 ==== +
- +
-1. 因每个函数均带一个虚拟机实现,因此生成的文件相对大。 +
- +
-2. 加密函数的运行速度相对较慢。 +
- +
-===== 使用场景 ===== +
- +
-加密主要用于防破解授权,考虑到加密函数执行较慢,因此,你可以在以下场合应用加密: +
- +
-1. 需要运行某些速度慢的功能时,如批量发邮件等,可在这之前调用加密过的函数,来检查用户授权。 +
- +
-2. 在用户安装你的应用的时候(对应Z-BlogPHP的InstallPlugin函数)。 +
- +
- +
-===== 使用 ===== +
- +
-1. 由于加密后的文件不可被编辑,因此,你需要把你要加密的函数,单独抽出一个新文件。 +
- +
-2. 在你要加密的函数头部,加入 +
-<code php> +
-  ​/** +
-   * @Z5Encrypt +
-   */ +
-</​code>​ +
- +
-即可启用加密。如以下示例。 +
- +
-<code php> +
-<?php +
-/** +
- * @Z5Encrypt +
- */ +
-function a() +
-+
-  $j = 1; +
-  while ($j <= 9) { +
-    $i = 1; +
-    while ($i <= $j) { +
-      echo "​{$i}x{$j}=" ​($i * $j) . " "; +
-      $i++; +
-    } +
-    echo "​\n";​ +
-    $j++; +
-  } +
-+
- +
-function b () { +
-  try { +
-    echo 'No don\'t encrypt me'; +
-  } catch (Exception $e) { +
-    echo 'look you dont support it'; +
-  } +
-+
- +
-class C { +
- +
-  public $a = 123456; +
-  ​/** +
-   * @Z5Encrypt +
-   */ +
-  public static function d () { +
-    echo 123456; +
-    echo 1 . "​\n";​ +
-    echo 23333 . "​\n";​ +
-  } +
- +
-  /** +
-   * @Z5Encrypt +
-   */ +
-  public function e ($z) { +
-    var_dump($this->​a);​ +
-    var_dump(func_get_Args());​ +
-    return $z; +
-  } +
-+
- +
-a(); +
-b(); +
-C::d(); +
-$a = new C(); +
-var_dump($a->​e(123456));​ +
- +
-</code> +
- +
-===== 局限 ===== +
- +
-  - 仅支持函数加密; +
-  - 引用部分可能与PHP实现不同; +
-  - 不支持try、catch,但是可以throw; +
-  - 不支持函数内定义function class lambda等; +
-  - 不支持Generator和yield; +
-  - 不支持写静态变量(可以读); +
-  - 不支持 ?? 语法; +
-  - 不支持declare和tick; +
-  - 不支持声明函数参数为可变参数;+
  
 +使用说明已移动至:https://​z5encrypt.com/​docs/​usage/​
appcenter/encrypt.1548696998.txt · 最后更改: 2019/01/29 01:36 由 zsx