# 激活码系统操作说明

## 目录结构

```
ai_autoPost_Tool/
├── tools/                      # 开发者工具（不打包）
│   ├── key_generator.py       # RSA密钥对生成工具
│   ├── license_generator.py   # 激活码生成工具
│   ├── private.key            # 私钥（绝对不能泄露！）
│   └── public.key             # 公钥（已嵌入代码）
├── python-engine/
│   ├── license_manager.py     # 授权管理模块
│   └── config.json            # 配置文件（加密存储）
├── license.enc                # 激活后生成
└── trial_info.json            # 试用信息
```

---

## 一、首次使用（生成密钥对）

### 1. 安装依赖
```bash
pip install pycryptodome
```

### 2. 生成RSA密钥对
```bash
cd tools
python key_generator.py
```

**输出：**
- `private.key` - 私钥，用于生成激活码（**绝对不能泄露！**）
- `public.key` - 公钥，已自动嵌入 `license_manager.py`

### 3. 确认公钥已嵌入
打开 `python-engine/license_manager.py`，检查 `PUBLIC_KEY` 变量是否已更新。

---

## 二、生成激活码

### 1. 获取用户机器码
用户在软件设置窗口可以看到自己的机器码（16位大写字母数字）。

### 2. 生成激活码
```bash
cd tools
python license_generator.py
```

**按提示输入：**
- 用户机器码（16位）
- 有效期天数（默认365天）
- 软件版本（默认1.0）

**示例：**
```
用户机器码: ABCD1234EFGH5678
有效期天数: 365
软件版本: 1.0
```

### 3. 交付激活码
将生成的激活码发送给用户。

---

## 三、用户激活流程

1. 打开软件 → 设置
2. 查看"机器编码"
3. 输入激活码
4. 点击"激活"按钮
5. 激活成功后，软件变为正式版

---

## 四、版本对比

| 功能 | 试用版 | 正式版 |
|------|--------|--------|
| 试用期 | 7天 | 永久 |
| 工作流数量 | 最多3个 | 无限制 |
| 延迟设置 | 禁用（灰色） | 可编辑 |
| 软件名称/版本 | 可编辑 | 只读 |
| 激活码显示 | 可输入 | 显示为**** |

---

## 五、安全注意事项

### 必须保护
- `tools/private.key` - 私钥文件
- `tools/` 目录 - 整个目录不打包

### 打包时排除
```
# 不要打包以下文件/目录
tools/
private.key
*.key（除public.key已嵌入代码）
```

### 建议加固
```bash
# 使用 pyarmor 混淆代码
pip install pyarmor
pyarmor obfuscate python-engine/license_manager.py
```

---

## 六、批量生成激活码

如需批量生成，可修改 `license_generator.py`：

```python
from license_generator import batch_generate

# 批量生成
machine_codes = ["ABCD1234EFGH5678", "1234ABCD5678EFGH"]
results = batch_generate(machine_codes, valid_days=365)

for code, key in results.items():
    print(f"{code}: {key}")
```

---

## 七、常见问题

### Q: 用户机器码是什么？
A: 基于用户电脑的CPU、硬盘、主板序列号生成的唯一标识，每台电脑不同。

### Q: 激活码可以多人使用吗？
A: 不可以。激活码与机器码绑定，只能在对应电脑上激活。

### Q: 用户重装系统后需要重新激活吗？
A: 取决于硬件是否变化。如果CPU、硬盘、主板没变，机器码不变，激活信息保留。

### Q: 如何撤销激活？
A: 删除用户电脑上的 `license.enc` 文件即可。

### Q: 忘记私钥怎么办？
A: 私钥丢失无法找回，需要重新生成密钥对并更新软件中的公钥。

---

## 八、技术支持

如有问题，请联系开发者。
