使用自制密钥算法保护WPF应用程序

时间:2017-02-22 13:32:34

标签: c# wpf key

我需要找到一种方法来锁定软件产品,因此只有购买它的客户才能使用它。我正在考虑实现自己的“CD-key”功能。

工作原理: 我有一个单独的程序,仅用于生成密钥。

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

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

2 个答案:

答案 0 :(得分:1)

我会尝试在https://softwareengineering.stackexchange.com/而不是在这里问这个问题 - 但我建议你研究一下(非)商业产品/ API的来帮助你(例如{ {3}})而不是重新发明轮子。由于这不是您的核心业务,因此您可能会获得一个不太理想的解决方案(因此解决方案较弱且漏洞),而不是其他人可能提供的解决方案。

您可以查看一些产品:

<强>自由

付费使用

PS:如果您要自己开始实施许可解决方案,请在部署的代码和生成器中实施相同的算法 - 逆向工程太容易了。尝试使用一些支持公钥/私钥机制的数学公式,或者正如我所说的那样尝试依赖专门从事这个领域的库/ api。

答案 1 :(得分:1)

<强>问题:

由于您的代码可以进行逆向工程,因此没有真正的方法可以为您的密钥存储提供安全的解决方案。所有变量都硬编码到应用程序中,或者在单独的文件中,使用相同的应用程序加密它们并不安全。您需要将其视为公开可用

第二,即使您将再次提供服务器密钥身份验证的方式。您的代码可以进行逆向工程。黑客将删除身份验证部分,并将重新构建您的应用程序,DRM免费。

第三,即使你的整个代码都会被加密,仍然有办法解码并删除身份验证(看看denuvo最新的失败)。

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

<强>解决方案:

有100%安全的方法可以阻止您的应用程序被破解,您需要100%基于Web。如果你想使用C#作为服务器引擎,有像ASP.Net这样的解决方案。