gpt4 book ai didi

cocoa - 应用许可证生成器

转载 作者:行者123 更新时间:2023-12-03 16:03:45 25 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

5年前关闭。




Improve this question




我正在使用 XCode 和 Objective C (Cocoa) 为 OSX 开发一个应用程序,我需要一个系统来为每个销售的应用程序生成许可证。

系统必须

  • 生成无过期序列号
  • 生成过期的序列号(对于试用版)
  • 处理黑名单
  • 包含用于从 OSX 应用程序输入和检查许可证号的 API

  • 有什么可以做的,还是我应该自己实现?

    最佳答案

    我会以三种方式之一来实现这一点,这取决于我的偏执程度。

    您使用的语言无关紧要。

    方法 1:RSA 签名的许可证

    如果您对有人对您的许可证生成器进行逆向工程感到偏执,则可以使用这种方法。您生成一个 RSA key 对,并将公钥与应用程序捆绑在一起。每个许可证号都使用私钥签名,应用程序使用公钥验证签名。由于您是唯一拥有私钥的人,因此有人能够为您的应用程序制作许可证生成器的风险几乎为零。

    缺点:许可证 key 很长,可能至少有 200 个字符(四行文本)。用户不想输入这些,他们将不得不复制和粘贴。

    优点:任何人编写许可证生成器的可能性几乎为零。没有经常性费用。

    方法 2:HMAC 签署的许可证

    如果你不那么偏执,这就是你使用的方法。许可证使用 HMAC 和私钥签名,但私钥必须与您的应用程序捆绑在一起。您可以对其进行混淆,但聪明人总是有可能从您的应用程序中提取 key 。

    缺点:许可证生成器是可能的。

    优点:快捷键。您可以选择使用截断的 HMAC; 64 位签名可能“足够好”,并且只有 16 个以 16 为基数的字符。没有经常性成本。

    方法三:在线验证

    这种方法既偏执又方便,但它需要用户有互联网连接,并且需要运行服务器。每个许可证只是一个随机的字符串。您服务器上的数据库将随机字符串映射到许可证。当用户注册应用程序时,它会向您的服务器发出 HTTP 请求以获取与指定字符串对应的许可证信息。服务器回复一个 RSA 签名的许可证。

    缺点:服务器的经常性成本。没有互联网连接无法注册。方便您检测盗版 key 。

    优点:快捷键。没有许可证生成器。许可证吊销很容易。销售损失给那些担心你会倒闭的人。

    临时许可证

    临时许可证也可以通过三种方式完成。

  • 在线
  • 签名有效期
  • 签署的许可条款

  • 显然,如果您使用签名的许可条款,那么如果用户不择手段,他们将能够清除他们的首选项以重新启动许可条款。 不要尝试在用户找不到的地方隐藏许可条款信息,这违反了用户对您的应用程序不会做任何恶意行为的信任。如果我发现任何应用程序在我的计算机上隐藏数据,我会删除该应用程序并拒绝从开发人员那里购买任何东西,我相信其他一些用户也有同样的感受。

    黑名单

    如果您是在线许可服务器,这很容易 - 黑名单在服务器上。否则,您将不得不将您的黑名单与应用程序捆绑在一起,并且只会在您每次发布新版本时更新。

    还有一个问题是是否阻止那些使用盗版许可证的人。这个问题没有明显的答案:您可能认为彻底阻止盗版许可证会更好,但接受带有警告消息的盗版许可证实际上是出售新许可证的机会。

    编码

    我相信你可以想出你自己的编码许可证的方式。我见过使用 Base 32,这很好,因为它很难被误读(与 Base 64 不同)。我还看到过使用字母和数字交替组的方案,这很好,因为在阅读长键时很容易记住你的位置。

    许可证 key 剖析

    以下是使用 HMAC 的离线许可证 key 的示例方案:

    AAXX-XXXX-YYYY-ZZZZ-ZZZZ-ZZZZ-ZZZZ
  • AA :产品名称,缩写为两个字母
  • XXXXXX :一个随机数
  • YYYY :到期日期,自 2013 年 1 月 1 日以来的天数,或 0 表示无限制
  • ZZZZZZZZZZZZZZZZ : key 第一部分的签名

  • 对于 RSA key , ZZZ...部分会很长。

    使用在线 key 服务器时, key 将为 ZZZ...并且不必很长(12 或 16 个字符)。

    关于开裂的注意事项

    不可能 无论您选择哪种方案,都可以防止有人破解您的应用程序。聪明的工程师可以分解您的应用程序并禁用许可检查。你用来阻碍他们的任何技巧只会减慢他们的速度,而不是阻止他们。

    关于cocoa - 应用许可证生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14427111/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com