我想许可我们的一个(Windows桌面或服务器)应用程序,以便可以使用它(使用预付费密钥)特定的小时数。它应该可以被停止和重新启动以及用户选择的运行周期。时间不需要记录到秒,分钟就可以了;虽然它需要证明技术上胜任的用户可以防止欺诈,但它不需要抵制政府机构层面的攻击!应用程序可以保持安装(只是防止被使用),直到用户稍后购买另一个密钥。钥匙' 必须是软件,加密狗不适合此应用程序。
理想情况下,我想了解如何在我们自己的Delphi(XE)代码中安全地实现这一点,但它也可以在任何语言的单独应用程序中完成,我们可以要求应用程序在我们的任何时候运行是。我愿意购买一个组件来实现这一点,但我不想为一个许可工具支付很多钱,这个工具不仅仅是这个要求。我们已经有一个许可机制可以阻止在特定日期之后使用。
答案 0 :(得分:2)
我建议您查看Oreans的WinLicense:http://www.oreans.com/winlicense.php
他们的试用许可完全符合您的要求。您可以轻松地将许可证设置为在累计分钟数后过期。
Winlicense可轻松集成到Delphi中,并具有多种配置选项。我在过去的一年里一直在使用它,并对软件及其支持非常满意。
答案 1 :(得分:1)
从您的电子商务商店调用可以根据以下内容生成密钥的Web服务: 用户名+电子邮件+日期时间+ NumHoursPurchased 使用简单的算法,例如使用AES256加密该字符串。
在您的应用中,他们会输入他们的名字和电子邮件。然后他们会粘贴他们从电子商务商店收到的钥匙。现在你知道他们什么时候购买它,以及多少小时。如果购买日期/时间是最近的(在过去30分钟内?),请解锁应用程序并开始计时。您需要自己跟踪时间,将其存储在安全,理想加密或模糊的地方。
答案 2 :(得分:1)
当用户购买几个小时后,您可以为用户提供(唯一的)许可密钥,并将此密钥存储在您自己的网络服务器上licensing.yourdomain.com
,以及购买的小时数和到目前为止花费的分钟数(所谓的“分钟计数器”)(即0)。现在,在应用程序中,有一个函数CheckLicensed: boolean
,例如,每分钟一次通过TTimer
运行。这会向POST
发送轻量级licensing.yourdomain.com
请求,并发送许可证密钥。然后,服务器将分钟计数器增加1。如果分钟计数器小于购买的分钟数,则函数CheckLicensed
将返回true。另一方面,如果许可证已过期,则返回false,您可以禁用功能甚至终止应用程序(当然 - 取决于应用程序的性质)。
当然,当应用程序没有运行时,分钟计数器不会增加,因此不会浪费许可证。此外,您可以为用户提供暂停TTimer
的选项,但当然,这也会禁用程序中的几个按钮(如果适用)。
这种方法需要持续的Internet访问,但这对您来说可能不是问题。这是非常安全的。例如,最终用户不能通过改变他的系统时间或改变分钟计数器来作弊(因为它驻留在你的服务器上,只有一个(美国)政府机构可以访问那个)。
如何发送POST
请求?我之前在How to send a HTTP Post Request in Delphi 2010 using WinInet
答案 3 :(得分:0)
我建议使用基于Armadillo保护引擎构建的Software Passport。几年来它一直很好用。
在某个阶段,您需要一个Armadillo专业版许可证才能创建可以创建到期x分钟的密钥的证书,但我认为随着Software Passport的出现(Armadillo曾经是单独的产品),它标准,但网站不是很清楚。
由于软件护照来自Digital River,因此可以轻松地将所有数字河流支持的软件门户网站集成为“购物车”。
另一个优点是,如果我理解正确(没有使用它),你可以使用一种称为自动密钥传送的东西,在这种情况下,软件包裹的安全信封与数字河流服务器联系,密钥直接传送进入你的软件。这意味着用户永远不会看到实际的密钥...(非常方便防止最终用户进行密钥复制)。