我正在编写一个软件应用程序,用户需要为其购买许可证并激活它。我需要关于如何开始编写强大的代码生成算法,当然还有代码检查的建议。我知道人们可以对代码进行逆向工程并制作一个注册机,但是,我的问题分为两个部分:
一般来说,无论应用程序是否以这种方式破解,我如何开始编写算法来接受某个序列号或字符串或它们的组合。 (例如,这是正确的吗?例如:第一个数字是 3-9 第二个应该是第一个 - 3,而第三个数字应该是第二个 * + ....随便...??)
在不与互联网打交道的情况下保护桌面应用程序免受盗版的最佳方法是什么。是算法(使逆向工程更难),保护源代码在应用程序安装到某处后不被看到? ...??
PS:也许值得一提的是,我使用 Java 作为我的开发语言。 谢谢
最佳答案
听起来您可能会受益于 public-key cryptography方法。
这可以分解为两个子点:
- A.你读过this thread here on SO?吗?它可能会让你对这个问题有一些了解。
- B.正如@Jaka 所说,从 Java 字节码生成人类可读的代码并不是一个很大的挑战(从我读过的内容来看)。您可以通过 an obfuscator 运行您的代码使某人更难从中生成人类可读的代码,但是如果有人真的想阅读您的代码,他们几乎总能找到方法。解决这个问题的最佳方法是采纳我链接到的 SO 线程中的建议:让别人更容易购买你的应用程序,而不是让别人窃取它。
(在声明他使用 Java 后编辑)
关于激活 key 算法 - 安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3383608/