0

当我想保护通用数据块以将此原则应用于通用应用程序的分发时,我正在考虑我拥有的各种选项。

  • 加密没有意义,这就像给用户提供一些无法使用的东西,或者我必须同时提供加密文件和密钥来解密它,这更没有意义。
  • 生成熵没有意义,因为这个过程只会以其他方式重新排列数据,而不会破坏应用程序的业务逻辑。
  • 将我的应用程序包装在一个需要用户密码的可执行文件中,我的真实应用程序和我的包装器是双重链接的,如果我的包装器没有发出绿灯,我的应用程序将无法运行。
  • 基于 Web 的分发,如流行的“Steam”服务,基于一些登录/ID 验证为每个用户定制编译。

还有哪些其他选择?我知道这不会最终得到一个明确的解决方案,但至少我想避免用户只是通过简单的复制和粘贴来重新分发我的应用程序,并且我希望在软件分发系统上至少有一点优势。

4

1 回答 1

1

这样做的通常方法是使用用户系统上已经存在的一些信息作为密钥来加密数据;然后将数据键入该系统。例如,在 Mac OS X 上,您可以通过库调用获取系统序列号。Sun 系统有一个 gethostid() 库调用,使这变得微不足道。在哑系统上工作的另一种方法使用以太网接口的 MAC 地址或类似的东西。

这可能很棘手,您通常必须编写一个小程序,该程序将在系统中运行并生成密钥,然后让客户将此密钥通过电子邮件发送给您,或者至少确定程序将密钥通过电子邮件发送给您。然后,您可以使用返回的密钥信息对受保护的数据进行加密,并让客户下载。如果数据 blob 的大小合理,则可以将整个事务添加到您的应用程序安装程序中。

于 2012-07-09T23:38:20.990 回答