【泛微E9】关于license授权文件的解析

一、文件结构

.license 文件本质是一个 ZIP 压缩包,里面包含三个文件:

xxx.license (ZIP)
├── publicKey          ← RSA-2048 公钥(X.509 DER 格式)
├── licenseEncryptKey  ← RSA 加密后的 DES 密钥(就是 encryptKey)
└── license            ← DES 加密的 license 内容

二、解密流程

解密流程
Step 1: 用 RSA 公钥 解密 encryptKey  →  得到 DES 密钥
                    ↓
Step 2: 用 DES 密钥 解密 license    →  得到 JSON 明文
                    ↓
Step 3: 解析 JSON,取出公司名、人数、过期时间等信息

三、官方 License 生成流程

仅为个人推断,如有错误请指正。

Step 0: 准备授权信息
  ├─ companyname(公司名)
  ├─ licensecode(授权码)
  ├─ software(软件版本)
  ├─ hrmnum(人数)
  ├─ expiredate(过期时间)
  └─ concurrentFlag(并发标志)
                    ↓
Step 1: 计算 license 校验值(MD5)
  拼接原文:companyname + licensecode + software + hrmnum + expiredate + concurrentFlag
  调用 Util.getEncrypt() → 得到 32 位 MD5 哈希
                    ↓
Step 2: 组装 JSON
  把所有字段 + license 校验值封装成 JSON 对象
                    ↓
Step 3: 生成随机 DES 密钥
  随机生成 8 字节密钥(每次都不一样)
                    ↓
Step 4: DES 加密 JSON 内容
  用随机 DES 密钥加密 JSON → 得到 license 文件内容
                    ↓
Step 5: RSA 私钥加密 DES 密钥
  用 RSA 私钥加密随机 DES 密钥 → 得到 encryptKey
  (这一步只有官方能做,因为私钥只有官方有)
                    ↓
Step 6: 打包成 ZIP
  把 publicKey + encryptKey + license 打进 ZIP 包
  输出 .license 文件

四、补充信息

Q: 是不是从一个合法 license 里就能把所有东西都提取出来?

A: 没错,是的。公钥和加密后的密钥都在文件里,公钥又是公开的,所以任何人都能从一个合法 license 里反推出 DES 密钥,然后无限复用。

拿到一个官方生成的合法 license 文件
          ↓
解压 ZIP → 取出 publicKey 和 licenseEncryptKey
          ↓
用 publicKey 解密 licenseEncryptKey → 得到 DES 明文密钥
          ↓
现在有了:
  ✅ DES 明文密钥
  ✅ 对应的 encryptKey(就是 licenseEncryptKey)
          ↓
用 DES 密钥加密你想要的任何内容 → 生成新的 license
把已知的 encryptKey 打进去 → 完成!
posted @ 2026-09-17 23:10  K89  阅读(27)  评论(0)    收藏  举报