概览
MagicLock 保护什么、两种保护档位是什么,以及贯穿全部文档的几个核心概念。
MagicLock 是一个命令行工具 + Python SDK:加密你的 Python 源码与 AI 模型,用签名授权把它们锁起来,并且每次运行时都完全离线复核这份授权。安装一个包,跑一条命令,就能交付。
心智模型
MagicLock 的一切都归结为两个独立的问题:保护什么,以及保护得多强。
| 保护什么 | 产物 | 强度 | |
|---|---|---|---|
| 便捷档 | Python 源码(.py) | .pya——一个加了闸门的加密容器,import 系统能直接理解 | 较好——挡住随手复制;运行期间解密后的字节码会存在于内存中 |
| 编译强档 | Python 源码,编译后 | 原生 .so / .pyd,或一个独立的应用目录 | 更强——不出货任何明文 Python,授权闸门会自动插入每一个编译后的模块,而不是集中在一处可以被找到并 patch 掉的地方 |
| 模型/资源保护 | 模型、权重、任意二进制资源 | .enc——一个加密信封 | 两档都适用;明文只会短暂存在于内存中 |
你可以先用便捷档在几分钟内把保护跑起来,之后再切到编译强档——代码写法不用变:编译强档的闸门是自动插入的,不需要加装饰器,也不需要手动调用 bootstrap()。
核心概念
以下几个概念会在全部文档中反复出现:
- 授权(License)——签发给你账号的一份签名凭证:允许使用哪些能力、有效期到什么时候。全程无需你手动处理任何密钥文件。
- 设备绑定(机器指纹锁)——默认情况下,一份授权——以及用它加密的任何产物——都绑定在激活它的那台机器上。把加密文件拷到别的机器,那台机器解不开。
- 激活——把一台机器纳入你账号名下的一次性步骤。它已经折叠进你第一次调用
protect/build的流程里,正常情况下你几乎不会手动执行它——见账号与激活。 - 能力(Capability)——授权可以授予的一项具名权限(代码保护、模型加密等)。运行时闸门与
open_model()各自检查自己需要的那项能力。 - 离线宽限——加密时会与授权服务器复核;短暂离线时有一个宽限窗口让你继续工作。解密则永远不需要联网。
- 有效期——一个可选的、独立于你的授权本身的控制项,直接作用在加密产物上,让它在某个日期或时长之后拒绝解密。
60 秒快速上手
shell
pip install magiclock
# 首次运行:登录(打开浏览器)+ 激活这台机器,然后加密。
# 之后每次加密都是瞬时完成、无需交互。
magiclock protect app.py # -> app.pya
# 完全离线运行:永远不需要登录、不需要联网。
magiclock run app.pya