1

我正在尝试为我的程序创建一个产品密钥注册器。我想要数据库中的产品密钥或字典类型的东西,我可以每天制作新密钥而不将它们放入程序中,并且每次都重新分配它们。我不确定从哪里开始,所以如果有人有任何想法,请发布它们

谢谢,

凯文

4

5 回答 5

2

您可以使用Advanced Installer。他们有一个内置的许可系统。

它有点贵,但从长远来看,它会为你省钱。当然,你也可以尝试自己制作。与检查数据库相比,独立注册的安全性更具挑战性。

于 2009-11-21T21:48:52.020 回答
1

查看 Microsoft 的 Shareware Starter Kit(免费)。

http://blogs.msdn.com/danielfe/archive/2005/07/10/437293.aspx

于 2009-10-17T17:54:24.603 回答
1

一开始就让事情变得简单。如果您需要更高的复杂性或更严格的安全性,请在开发完基本框架后进行。

第一步。看看一些简单的加密算法,比如 Tiny Encryption Algorithm。熟悉使用单个密钥加密和解密文件。

http://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm

下一步。您将需要大量的密钥、一个用于存储它们的数据库以及某种与它们相关联的客户 ID。首先,假设客户 ID 是从 100000 开始的 6 位数字,密钥是 128 位十六进制格式,数据库是一个简单的文本文件。此时,您应该可以编写一个程序来为接下来的 100 个客户生成一批密钥。

第三步。现在您有了一个数据库,因此设置一些脚本或应用程序,以便您可以加密特定文件,生成多个副本,每个客户 ID 一个,并使用他们的密钥加密。

第四步,编写一个简短的简单应用程序,获取一个文件,使用密钥对其进行解密,然后加载并运行生成的可执行文件。应用程序终止后,删除解密文件。

现在,解密和运行的小应用程序必须以某种方式制作成多个版本,每个客户都有一个版本,并且他们的密钥到位。最好的方法是生成一个与密钥大小相同的随机数,并将其作为常量放在代码中。然后编译它。此时,像 grep 这样的工具可以找到它在可执行文件中的位置。编写另一个小应用程序以读取解密器应用程序,用真实密钥替换标签,并写出您将与匹配的解密应用程序一起分发的解密器版本。

在此之后,您可能希望查看比 TEA 更好的解密算法,但不要使用会违反出口法律的过于强大的算法。

请注意,这一切都不会阻止坚定的小偷,但它应该防止随便的小偷,你会学到很多东西。将自身的关键部分存储在加密的 USB 密钥上的应用程序可以获得更好的安全性,这样硬盘驱动器上就永远不会有解密的副本。请记住,任何时候你认为你已经找到了改进加密或代码保护的方法,你很可能是错的。比我们更伟大的思想,一生都在研究加密,一般规则是,当你稍微偏离公认的算法和用法时,你最终会降低而不是提高安全性。

于 2009-10-17T19:39:57.137 回答
0

如果您保留有效代码的中央存储库,则您的软件用户将需要 Internet 连接才能与此存储库通信,以确定他们输入的许可证代码是否有效。该方案也可能存在可扩展性问题。

一种常用的替代方法是从满足某些特定数学关系的再见数据生成代码,然后验证代码以查看关系是否成立。

基于上述概念的一种非常强大的算法是加密 RSA 算法。

如果您可以使用基于 RSA 的现成许可系统,请查看CryptoLicensing

于 2011-02-22T08:58:05.293 回答
0

滚动您自己的注册和保护程序非常困难,而且通常很容易破解。试着看看一些已经做到这一点的廉价商业产品,intellilock很便宜,而且我发现它的功能很好(如果没有得到生产它的公司的很好支持,也得到了社区的很好的支持)。

于 2009-10-17T17:46:00.127 回答