序列号格式:
- 由 24 个十六进制字符加上连字符表示的 24 个八位字节以提高可读性
例如 D429-A7C5-9C15-8516-D15D-3A1C
- 0-15:{电子邮件+主哈希}
- 16-19:{id}
- 20-23:{时间戳}
电子邮件+主哈希算法:
- 生成用户电子邮件的 md5 哈希(32 字节)
- 生成未公开主密钥的 md5 哈希
- 异或这两个哈希
- 删除奇数字节,将大小减小到 16
- 例如 D429A7C59C158516D15D3A1CB00488ED --> D2AC9181D531B08E
ID:
- 最初为 0x00000000,然后随着每个售出的许可证递增
时间戳:
- 购买许可证时生成的时间戳
验证:
- 为了注册产品,用户必须输入 1) 电子邮件地址和 2) 序列号
- 生成电子邮件+主哈希并验证它是否与序列号的 0-15 匹配
- 从序列中提取时间戳并验证它是<当前时间戳和>=第一个许可证出售的日期