发到数学节点下,不知是否合适,请教大家集思广益,凭兴趣研究。
声明:兴趣所在,仅为算法研究,人格保证无作弊、无盗用。
项目中遇到供应商提供的产品需要授权,我方已支付款项购买永久授权,因供应商内部原因暂时无法提供永久授权,故请我帮忙定期更新授权。
至今进行了 4 次短期授权操作,每次都是根据软件操作界面提供的 8 个字符的编码作为输入、并指定授权时长,进而生成授权数据;成功导入授权数据后,产品软件界面显示新的 8 字符编码。下面给出 4 次授权相关的数据,格式为“编码|授权时长|授权数据”:
4f1f2368|1 个月|23265,61680,57795,50115,54000,53985,50115,50145,38640,42450,46290,57825,38565,57840,57810,61680
f92d534c|1 个月|19395,50115,50130,53985,54000,50160,57825,53955,46275,38625,46290,57825,38535,61680,57825,54000
4d4b9612|2 个月|30945,61680,50115,53985,61635,61680,57810,50055,57750,61575,61665,50100,46290,53955,54000,57840
fea364c2|2 个月|27075,57825,50115,57810,57810,57840,54000,50055,53925,57750,61635,53940,42465,61650,61680,50160
观察每次得到的授权数据的规律发现以下特征:
- 均由 16 组数字构成,每组包含 5 个阿拉伯数字;
- 这 16 组数字里,每组的末位数字只有 0 和 5 两种情况;
- 提列第 2 条中的 0 或 5 后可以组合成 16 个数字串,联想到二进制,且正好是 16bit、2 个字节(猜测)。
简单分析:
- 软件采用本地离线计算方式校验授权数据;
- 因为可以从授权数据中获取授权时长,所以授权数据中应该包括未加密的用以表示时长的数据;
- 因为是离线校验授权数据,所以授权数据必定包含对对应编码的散列或加密或其它变换。
以上,未琢磨明白,不甘心,求教大家指点迷津。