代码之家  ›  专栏  ›  技术社区  ›  Mawg says reinstate Monica

如何制作用户可以读但不能写的文件?

  •  -1
  • Mawg says reinstate Monica  · 技术社区  · 14 年前

    我想将S/W许可证作为加密文件分发。每次有人购买许可证时,我都会创建一个新的文件,并通过电子邮件发送出去,说明如何将其放在某个目录中。

    用户运行的PHP代码应该能够解密文件(而代码被模糊化,使他无法破解)。显然,用户不应该写类似的文件。

    我们不要讨论这是否值得。我被命令执行它,所以…我该怎么办?我能用公钥加密给他一把吗?


    我不能只给用户一把钥匙和另一把吗?他能看书,我能写字

    5 回复  |  直到 8 年前
        1
  •  1
  •   caf    14 年前

    听起来你要找的是数字签名。

    创建许可证文件时,使用 私有的 关键。当应用程序加载许可证文件时,它使用 公众的 密钥,它被硬编码到模糊的许可证检查中。

    显然,用户只需修补许可证检查代码本身——或者用自己的公钥替换您的公钥,或者只是为了避免使用许可证检查替代工具——但实际上您对此无能为力。

        2
  •  2
  •   David W.    14 年前

    您可以使用类似的许可证 FlexNet Publisher License System .

    flexnet许可证有两个方面。首先是确定一个站点拥有许可证。这可以基于IP、MAC地址或处理器的内部ID来完成。

    一旦您获得了该站点的许可证,该站点的许可证就可以在活动用户的基础上进行(您可以拥有数千个用户,但一次只能有10个用户使用该软件)、座椅许可证(您在该站点有10个用户可以使用该软件,并且只有那些用户可以使用该软件)。如果第十一个人想要它,网站必须将许可证从一个被许可给新用户的人身上移开。或者,购买更多许可证)。而且,您可以拥有一个无限用户的站点许可证。

    flexnet许可证可能会被破坏,但通常很强大,可以向您报告违反许可证策略的情况。

    当然,要使用flexera软件的许可计划,您必须支付许可费。而且,即使我不知道,flexnet许可方案也可能有某种“开源”的实现。

    我从未使用过它,因为我完全相信开源软件的理念。而事实上,没有人愿意为我写的任何东西支付一分钱。

        3
  •  2
  •   Yojimbo paan    8 年前

    如果你有一个文件只是说“是的,软件可能正在运行”,你当然不能阻止他复制这个文件。

    什么你 可以 要做的是用特定于客户系统、客户名称、IP地址或其他内容加密文件。然后,您可以让您的软件检查这个IP地址,或者在所有报告或其他内容上打印客户的姓名。

    您可以通过简单的对称加密或使用签名来实现,这两种方法都不能阻止他篡改程序以找到密钥。所以告诉你的老板这是一个障碍,但肯定不是牢不可破的。

        4
  •  1
  •   OmnipotentEntity    14 年前

    简单的RSA加密并不能解决您的问题,一旦代码被清除,任何人都可以得到它。

    一个更好的问题是,“我愿意投入多少工作,使我的客户很难获得我的代码?”因为不管语言和方法最终如何运行,当它运行时,它可以被读取。

    唯一简单的方法是自己托管它,而不允许您的客户机或其服务器访问您的代码。

        5
  •  0
  •   tobyodavies    14 年前

    可能您要做的是使用XOR加密(用密钥对文件中的每个n字节块执行XOR加密),因为@andrekr说您实际上不可能执行此操作,所以您可能需要用您的私钥对加密的文件进行签名,然后您可以验证加密是由您完成的。

    当然,如果您不每次都检查这个,并且不使用不透明的文件格式和编译/删除的代码,那么它就不会有太大的区别。

    在一般情况下,如果要向用户显示数据,就不可能停止数据的数字复制-在最坏的情况下,他们只需拍摄屏幕截图(甚至捕捉发送到监视器的信号)。