如何加密软件工具的许可证?

时间:2016-01-26 07:52:29

标签: java security licensing decode encode

我已经在Java代码中为软件工具创建了一个许可文件,并且该文件有一个序列化的对象,其中包含一些字段,如创建日期,到期日期,cpuid,执行计数器。 现在我需要保护此文件并将其提供给用户,以便客户端软件可以读取此文件以检查过期日期和执行计数器。 我知道这很容易避免,但对于离线许可,这是我最好的想法,对其他人来说已经足够了。 所以为了加密这个文件,我想用RSA,用私钥我编码这个文件,然后把公钥发给客户端。因此,客户端软件或所有知道公钥的人都可以读取此文件,但没有人可以更改它或写入新文件(除非他使用新的私钥并更改公钥)。 但是RSA密钥长度的主要问题是因为我的对象对于2048密钥长度来说可能太大以及如果在三个月后我们决定向对象添加新字段会发生什么? 您是否知道加密此许可证的有效方法,以便只有服务器才能发布有效的许可证?最好使用DES还是其他对称算法? 谢谢,问候

2 个答案:

答案 0 :(得分:2)

使用固定长度的安全散列算法(例如SHA2)将对象散列为256位或384位。然后RSA签署对象的哈希值而不是对象本身。将签名附加到许可证文件。

我不建议使用对称算法,因为任何反向设计逻辑以检查许可证的人都会知道如何创建自己的许可证。

答案 1 :(得分:0)

我建议使用任何可用的许可解决方案,而不是在您的加密概念不那么明确时自己实施。这样可以节省您的客户的时间和时间。

https://cryptlex.com/help/offline-activation