2017-02-22 93 views
0

我需要找到锁定软件产品的方法,因此只有购买它的客户才能使用它。我正在考虑实施我自己的“CD-key”功能。使用自制密钥算法保护WPF应用程序


它是如何工作: 我有一个单独的程序,即只用于生成密钥。

程序使用与正在调用的软件相同的算法。密钥随程序一起提供(在说明手册时)并在程序中输入一次。之后,用户可以自由使用它,而无需再次输入(直到重新安装)。

这看起来很简单,对我来说可行,但唯一的问题是密钥可以在其他设备上重复使用,所以我需要实现一种方式,即将密钥在线标记为已使用和未使用,程序正在卸载。

回答

1

我会尝试在这里代替问这对https://softwareengineering.stackexchange.com/ - 但我建议你看看(非) - 商业产品/ API的为您排忧解难(如http://www.ssware.com/cryptolicensing/cryptolicensing_net.htm)在重新发明轮子代替。由于这不是您的核心业务,因此您可能会得到比其他人可能为您提供的最佳解决方案(因此也是弱点和漏洞)。

有些产品你可以看看:

免费

付费使用


PS:如果你将开始实施对自己的一个授权解决方案,请放下实施中都部署代码相同的算法,以及发电机 - 反向工程太容易了。尝试使用一些支持公钥/私钥机制,例如一些mathemathical公式,或像我说的尽量靠库/ API,它的专业在这个领域。

+0

好的,谢谢 – someone1

+0

@ someone1可能会检查QLicense产品可能...至于在线注册您的“密钥” - 一旦发布密钥,我会说它锁定给一个特定的用户 - 并建立一个Web服务在哪里用户可以注册他的软件?但正如我所说,请注意API链接(和谷歌其他),看看他们是否提供了更加防水的解决方案。 –

+0

好的,谢谢:) – someone1

1

问题:

由于您的代码可以逆向工程,没有提供您的密钥存储安全的解决方案真正的出路。所有变量都被硬编码到应用程序中,或者在单独的文件中使用相同的应用程序进行加密,这些变量都不安全。你需要把它们当作公开可用

其次,即使你将提供服务器密钥认证的方式,再一次。您的代码可以被反向设计。黑客将删除身份验证部分,并将重新构建您的应用程序,免费使用DRM。第三,即使你整个代码,将被加密,仍然有解码和删除身份验证(看看denuvo最新失败)的方法。

如果您将连接代码加密和服务器端密钥验证,这取决于有多少人参与黑客攻击,您可以将它们延迟一段时间。

解决方案:

有100种%安全的方式来阻止你的应用程序是破解的,你需要使它100%基于Web的。如果您希望将C#用作服务器引擎,则有像ASP.Net这样的解决方案。

+0

非常真实!如果你不需要去桌面路由,那么最好使它基于webbased。或者,也许还需要连接到服务器以获取服务器上的结果和数据以及计算结果的瘦客户端 - 因此您的业务逻辑不会分布在每台计算机上。 –