生成唯一值的算法

时间:2013-06-06 08:54:52

标签: java

我想保护将通过cd分发的桌面应用。为了实现想法,我需要弄清楚函数(算法)将有两个参数cd_key(16 char long)和motherBoard_number(我认为14 char long),并且将返回字符串16 char long我可以确定(通过逆向工程)cd_key和motherBoard_number。有没有人有想法?我有想法将两个字符串转换为二进制,然后做一些操作,但我总是得到长于16的字符串。

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

3 个答案:

答案 0 :(得分:3)

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

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


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

enter image description here

答案 1 :(得分:0)

Java WebStart 分发渠道,通过互联网,可以实现可靠的保障。

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

答案 2 :(得分:0)

我不认为你想要什么是可能的,因为当将16个char字符串和14个字符串char组合成一个16个char字符串时,你将丢失信息。

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