我正在为 Windows 和 Mac 开发一个用 C++/Obj-C 编写的小型跨平台产品。我被要求为此实现一个许可模块。这项任务是一个雄心勃勃的项目的一部分,该项目旨在为我们的所有产品引入许可。最后,我们将拥有一个完整的许可计划,我们将能够向我们的客户出售支持年度续订、许可级别等的许可。我的问题是我不知道关于实现许可检查器的第一件事。任何人都可以为我指出一些相同的方法吗?有没有我可以学习的开源许可模块?
最佳答案
我使用了部分 key 验证 (PKV) 系统,并且我已经使用 PHP 生成器在 C# 中实现了这一点。谷歌会想出各种命中、解释和实现;但是 Brandon Staggs 写了一个很好的概述(尽管是在 Delphi 中!),在这里:
PKV 通过在 key 中编码某些信息(许可证类型、序列号产品、日期等)以及用户名的哈希值和编码信息的哈希值来工作。大部分 key 实际上由多个单字符哈希组成。这个想法是你只检查这些哈希的一个子集。发布的确切子集可以随着时间的推移而更改,以实现某些安全性并防止某些类型的逆向工程。
我还将加密 key 以帮助混淆许可证中每个字符的含义。否则,拥有多个键的人可能会确定某些字符位置意味着某些事情(“哦,字符 3-4 是序列号”)。这可能是你盔甲上的一个缺口!
您开发的任何许可系统都将是不完美的。它将是可破解的,如果您的产品受欢迎,它将被破解。然而,有一个强有力的论点认为,许可证系统的存在是为了让诚实的人保持诚实,并为稍微不诚实的人设置足够的障碍——但没有太多的障碍会造成太大的不便(例如,我通常反对硬件锁定)。那些入侵您系统的人可能无论如何都不会为此付费。
关于c++ - 实现许可检查库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4933984/