【问题标题】:Creating a unique key for a software that can be used only once为只能使用一次的软件创建唯一密钥
【发布时间】:2012-08-10 11:30:34
【问题描述】:

我创建了一个基于 Windows 的软件应用程序。很快我就会让它活起来。意味着我的客户从我的网站下载后就可以使用它。还要提一下,我制作的软件只能使用我提供的密钥。最初它是免费试用的。

我在这里生成 35 位数的密钥,它是唯一的。意味着一旦用户向我请求密钥并且我将密钥发送给他/她,他/她就可以使用我的应用程序。但真正的问题出在此处。

我希望代码只使用一次。

例如:如果用户下载了我的应用程序,他可以使用密钥来使用我的应用程序,但其他人不能使用相同的密钥。假设我的密钥是 xxx,相同的代码 xxx 不应该适用于任何其他下载了我的应用程序的人。只是为了让软件仅供真正的用户使用。

我也浏览过这个链接

http://social.msdn.microsoft.com/Forums/zh/winformssetup/thread/301913a0-ecf9-4095-8d66-a3f4baeea6eb

丹尼·史坦顿

我还没有达到我的要求。

首先,我想获取注册下载我的应用程序的人的 IP 地址,基于此我可以限制我的密钥只能由其 IP 地址将存储在我的数据库中的人使用。但我认为这将是错误/不必要的过程。并且要使用我的应用程序,每次都应该插入个人网络电缆。但这并不能解决我的目的。

其次,我想创建一个应用程序 ping 到我的服务器或我的进程。

就像最初当用户运行应用程序(在线或离线)时,应用程序应该可以工作,但是一旦他将网络电缆/插头连接到网络,就应该向我的服务器或我提供警报。从我这边,我可以检查用户是否正在使用我提供给他的密钥。如果无论哪种方式,用户都不是真实的,我应该能够阻止他再使用我的应用程序。在我这边,我决定将密钥存储在我提供的数据库中。并且每个请求的键都在另一个表中。我不确定我是否走对了。但到目前为止,这就是我想到的事情。

但总而言之,最后我希望一个密钥只能由一个用户使用。只是为了避免一百万个不同的用户通过一个键使用我的应用程序。

我不确定我提供的任何想法。

现在有什么方法可以实现吗?

【问题讨论】:

  • 为什么不使用 guid?它的不确定性,不会产生相同的结果
  • 我同意这一点。每个用户生成的 Guid 始终是唯一的。存储 IP 对此没有意义,因为每次用户登录网络时它可能会有所不同,具体取决于提供商。即使公司有固定IP,也无法区分同一公司的多个用户。
  • @Mutu Yolbulan:我只想做一些事情来阻止很多人使用单个密钥访问我的应用程序。我不知道该怎么做。我创建了一个生成唯一代码的不同应用程序,因此创建唯一密钥不是我的问题。我所想的只是同一个键不应该被多次使用。例如:如果密钥是“xxx”并且用户下载了我的应用程序,则只有他可以使用密钥使用我的应用程序。其他任何人都不应使用相同的密钥“xxx”。希望你能理解我的询问。我试图具体一点。
  • 您是想使用Halt and Catch Fire 指令让机器无法再次执行您的程序,还是使用Execute Operator Immediate 阻止用户再次运行它?还是用DeleteFile标记可执行文件一关闭就删除?一个有足够动力的用户可以破解你所做的任何事情,以防止重复使用或重新安装。

标签: c# winforms


【解决方案1】:

获取他机器的硬件指纹并根据它生成密钥。您的软件应检查是否为该特定机器生成了密钥。 但是,这需要在线激活您的软件。您可以通过两种方式做到这一点

  • 让用户启动未激活的应用程序并显示他发送给您的硬件指纹。然后您返回他输入的激活密钥。
  • 您的应用程序会自动连接到激活服务并发送指纹、接收激活密钥并存储它

另一点是包含有关硬件的几个组件的信息,并允许用户更改一个或几个。例如。获取硬盘序列号、MAC地址、主板SN、一些CPU信息(例如家族名称)的指纹,您应该允许用户升级或添加另一个硬盘。

有关于getting hardware information的SO话题。

【讨论】:

    【解决方案2】:

    我认为您必须做出选择,您的密钥系统越强大,对您的用户来说就越难。

    IE:一个好的系统是生成一个硬件密钥,所以它只安装在注册的计算机上。虽然效果很好,但购买新计算机的用户可能会遇到麻烦,要求您注册新的硬件密钥。

    如果您只给他们一个密钥(如序列号),那么在另一台计算机上使用它可能会很容易。

    所以基本上,如果您认为很多用户不会因为该软件不会被很多人使用而放弃他们的密钥,那么我不会获得“超强”硬件身份验证..

    另外,不要注册 IP 地址,每个拥有动态 IP 的人都会讨厌你这样做。

    【讨论】:

      猜你喜欢
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多