如何为我的 C# 应用程序创建产品密钥?
我需要创建每年更新的产品(或许可证)密钥。此外,我需要创建一个试用版。
Related:
- 如何最好地混淆我的 C# 产品许可证验证码?
- 如何保护您的软件免遭非法分发?
您可以执行一些操作,例如创建一条记录,其中包含您想要向应用程序进行身份验证的数据。这可以包括您想要的任何内容 - 例如程序功能启用、到期日期、用户名(如果要将其绑定到用户)。然后使用某种带有固定密钥的加密算法对其进行加密或对其进行散列。然后您只需在程序中验证它即可。分发许可证文件(在 Windows 上)的一种方法是将其作为更新注册表的文件提供(用户不必键入它)。
但要小心错误的安全感 - 迟早有人会简单地修补您的程序以跳过该检查,并分发修补后的版本。或者,他们会制定一个通过所有检查的密钥并分发它,或者回溯时钟等等。无论你制定的计划多么复杂,你为此所做的任何事情最终都将通过默默无闻来实现安全,他们将永远能够做到这一点。即使他们不能,也会有人会,并且会分发黑客版本。即使您提供了加密狗,同样适用 - 如果有人愿意,他们也可以修补该检查。对代码进行数字签名不会有帮助,他们可以删除该签名,或放弃它。
您可以通过使用技术来阻止程序在调试器等中运行,从而使问题变得复杂一些,但即使这样也不是万无一失的。所以你应该让它变得足够困难,这样诚实的用户就不会忘记付款。还要非常小心,不要让您的方案对付费用户造成干扰 - 最好有一些盗版副本,而不是让您的付费客户无法使用他们已付费的产品。
另一种选择是进行在线检查——只需为用户提供唯一的ID,并在线检查该ID应具有哪些功能,并将其缓存一段时间。但所有同样的警告仍然适用——人们可以避开这样的事情。
还要考虑必须处理忘记密钥的用户等的支持成本。
编辑:我只是想补充一点,不要在这方面投入太多时间,或者认为你的复杂方案会有所不同且无法破解。只要人们控制程序运行的硬件和操作系统,就不会也不可能。开发人员一直试图为此提出更复杂的方案,认为如果他们为此开发自己的系统,那么只有他们自己知道,因此“更安全”。但这实际上相当于尝试构建永动机的编程。 :-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)