我有一个 ASP.NET MVC Web 应用程序,它应该以各种版本出售,每个版本都可以解锁越来越多的应用程序功能。想想类似 Visual Studio 的版本 - Professional 允许您执行 X 和 Y,但使用 Premium,您也可以执行 Z。
我正在尝试增强应用程序,以便能够可靠地确定实际购买的版本。或者,换句话说,以某种方式存储有关版本的信息,以便应用程序可以轻松访问它。我不是在寻找任何花哨的保护机制,只是让破解应用程序比重写一些纯文本文件更复杂:)
我能想到的一种方法是使用公钥/私钥对。我生成一个带有版本有效负载的许可证密钥,用私钥对其进行加密,然后将其发送给客户。客户然后输入加密的许可证密钥,该密钥被存储在某个地方,例如数据库。公钥将被硬编码到我们的 web 应用程序中,以便应用程序可以解密许可证密钥并决定是否允许访问某些功能。
这可能会起作用,但是将公钥硬编码似乎有点蹩脚。上面提出的解决方案是否有其他选择(也许我想在这里重新发明轮子)?它有什么明显的缺陷吗?