1

我想保护我的桌面应用程序,它将由 cd 分发。为了实现我的想法,我需要找出函数(算法),它将有两个参数 cd_key(16 字符长)和母板编号(我认为 14 字符长),它将返回 16 字符长的字符串,我可以从中确定(通过逆向工程)cd_key 和motherBoard_number。有人知道吗?我有将两个字符串都转换为二进制然后做一些操作的想法,但我总是得到长于 16 的字符串。

编辑:当用户执行注册时,他输入 cd_key,在后台我得到主板序列号,我将这两个字符串发送到我的网络服务,我必须生成字符串并将其发送回应用程序。然后我将生成的值写入注册表。问题是我必须支持离线注册。这个想法是他通过邮件或短信向我发送这两个值。他再次需要向我发送 cd_key 和 MotherBoard_number,为了防止作弊,我需要生成值的算法,该值将用户通过电子邮件发送给我,并基于该值我将获得 cd_key 和 MotherBoard_number。我想该字符串是否不超过 16 个字符。

4

3 回答 3

3

通常,要检查许可证代码的正确性,您不会“逆向工程”许可证代码,而是根据运行应用程序的 PC 的信息生成一个新的。

如果生成的代码与用户输入的代码匹配,则应用许可证有效。


以下方案是为了展示我在评论中概述的算法。如您所见,在任何时候都不需要反转许可证代码的编码。

在此处输入图像描述

于 2013-06-06T09:03:35.647 回答
0

Java WebStart分发渠道(通过 Internet)将提供可靠的保障。

打印单独生成的生产密钥(许可证号)也是一种解决方案。提供更新功能,因此您可以通过互联网连接进行检查。许可证密钥可以在应用程序中显示用户的姓名。初始更新可以释放被阻止的附加功能。

于 2013-06-06T09:06:43.817 回答
0

我不认为您想要的通常是可能的,因为将 16 字符字符串和 14 字符字符串组合成一个 16 字符字符串时,您会丢失信息。

如果您可以返回一个 30 字符的字符串,那么这很容易,或者如果返回的字符串的字母表可以大于输入字符串。例如,如果 CD 密钥和主板编号是大写字母和数字,但返回的字符串是完整的 ASCII 字符集,那么它可能会起作用。

于 2013-06-06T09:24:14.763 回答