【泛微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 打进去 → 完成!
浙公网安备 33010602011771号