我经营着一家处理这个问题近 20 年的软件公司。作为开发人员和企业主,我想首先鼓励您稍微拓宽您的目标。例如,将您的问题定义为“防止盗版”就是一个错误。您的目标应该是最大化收入。
话虽如此,有些人根本不会购买您的软件,但他们可能会付出相当大的努力来免费获得它。他们获得免费副本并不“公平”,但投入大量资源来防止它在很大程度上是浪费时间。事实上,这些人最终往往只是为了进入我们的更新列表、获得支持或因为他们的业务发展到现在可以负担得起我们的许可证的程度而“合法化”。在这些情况下,原始盗版最终会增加我们的收入。
那么,我们如何授权?
我们会在每次新安装时生成一个随机许可证号(10K 到 99K 之间的数字很好)。然后我们有一个生成匹配数字的算法(任何不平凡的事情都会做)。顺便说一下,我们使用随机数,以便在另一台计算机上重新安装的任何尝试都会导致不同的许可证/匹配号。
接下来,我们要求用户打电话给我们以获取其许可证的匹配号码(这很重要)。该软件会查看他们输入的匹配数字,并将其与用户端生成的匹配值进行比较。如果匹配,则软件完全激活。
我说让他们给我们打电话很重要,因为我们利用这个机会与他们讨论他们的设置,回答任何问题,并让他们知道他们正在与真实的人打交道。很少有人有勇气尝试打电话和冒充另一家公司(我们查找他们并将他们的信息与我们的采购数据库进行比较)。请注意,我们的套餐运行近 2000 美元,因此电话是合理的。如果您的包裹成本较低且体积较大,您可以通过电子邮件执行此操作。最后,我们使用电话通知用户如何使用新许可证获得升级和技术支持。
最后,我们将密钥存储在应用程序的数据库(本地安装的 MSDE/SQL Express 数据库)中,这样任何复制应用程序的尝试都将 A)不重要,B)带来大量特定于组织的数据首先购买了合法版本(使他们不太可能分享)。许可密钥被加密并“拆分”成两个不同的密钥,保存在两个不同的表中。因此,简单的“找到密钥并在盗版中输入”是行不通的。
底线?当您使整个软件包不仅仅是软件,构建一些基本的保护机制并引入人为因素时,您应该看到您不需要加密狗的费用和麻烦来最大化收入。