我在java中创建了一个应用程序。现在我想把它交给几个客户。我希望每个客户都必须购买一个串行密钥才能使用该软件。没有这个密钥,软件就不应该像市场上的其他软件一样运行。
我该怎么做?
我知道我无法完全保护它。我只想要一个简单的串行密钥功能,这样非技术人员和新手程序员就很难破解安全性。
答案 0 :(得分:8)
有现成的库可用。 (例如,谷歌快速搜索出现了一种名为JLicense的产品。)但实施自己的机制并不困难,也更灵活。一种简单的方法是计算客户名称的SHA-1哈希加上一些硬编码的盐。将结果编码为字母数字字符,您就拥有了许可证密钥。现在,当有人去安装您的产品时,请询问他们的客户名称和许可证密钥。重新计算哈希并将其与用户为您验证密钥的客户密钥进行比较。
这只是一个简单的例子。您可以执行各种操作,包括加密某些数据并将其存储在密钥中(例如,过期日期或未锁定功能的子集)。您可以根据自己的喜好制作简单或复杂的内容。
请记住,除非您使用某种分布式身份验证系统,否则您提出的任何解决方案都可以由具有足够技能和动力的人进行逆向工程。在Java中,这比使用C或C ++等本机编译语言更容易实现。模糊代码可能会有所帮助。
答案 1 :(得分:1)
我在之前的EasyLicencer中提到了protection(在反向工程中提供了不错的answer级别)。您将在讨论中找到其他一些选项。对于开源解决方案,请查看TrueLicense Library Collection,但可能需要更多工作。