重要

这里主要介绍的是 Pyarmor 9.1 中新增加的功能,原来的功能请参阅 Pyarmor 9.0 文档

1. 简介

为了提高运行加密脚本的性能,在 Pyarmor 9.1 中增加的两种新的加密脚本类型

  • 迷你型脚本 (MINI)

    以提高执行性能为主要目的,设计目的是用于加密提供 Web 服务的脚本

    和以前的加密脚本相比

    • 使用简化版的运行辅助扩展模块,对执行性能进行了优化

    • 不直接支持设置加密脚本有效期和绑定加密脚本到固定设备等运行时刻辅助功能

    • 支持 Freethreading 特性(Python 3.13+)

  • 重构型脚本 (RFT)

    重构型加密脚本就是仅对脚本中函数,类,属性和方法等进行重命名,还保持原来的脚本结构

    迷你加密脚本仍然需要预编译的扩展模块,所以限制了其应用范围

    重构型加密脚本不需要扩展模块,凡是 Python 正常脚本可以使用的地方,重构型脚本都可以使用

    例如在 WASM 中使用重构型加密脚本,也可以使用 Nuitka,CPython,甚至 Pyarmor 对重构型加密脚本继续进行处理

因为两种新的加密类型主要是通过重构方式来保证安全性,而为了对脚本进行重构,需要正确处理模块之间的导入关系

在 Pyarmor 9.1 中使用了 工程 来管理需要加密的模块和包,正是为了解决此问题

Pyarmor 9.2.2 又增加的两种新的加密脚本类型

  • 嵌入型脚本 (ECC)

    嵌入型脚本不会改变模块中的函数,但是会把函数体内部的语句转换成为 C 语句,然后编译生成机器指令,加密方式不可逆

    和原来的 BCC 加密模式相比,BCC 模式是把模块中整个函数转换成为 C 语句,对脚本的改变更大,而 ECC 变形的只是函数体,相当于把 C 语句嵌入到了函数体内部,这样能更大的保留原来的 Python 脚本行为,但是性能上 BCC 应该更快一些。

    请参考 概念和定义 中嵌入型脚本的例子

  • 虚拟型脚本 (VMC)

    虚拟型脚本不会改变模块中的函数,但是会把函数体内部的语句转换成为虚拟指令,加密方式是可逆的

    和嵌入型(ECC)相比,主要是构建过程不需要 C 编译器,因为直接使用的是虚拟指令

    请参考 概念和定义 中虚拟型脚本的例子