c++ - 实现许可检查库

标签 c++ objective-c licensing

我正在为 Windows 和 Mac 开发一个用 C++/Obj-C 编写的小型跨平台产品。我被要求为此实现一个许可模块。这项任务是一个雄心勃勃的项目的一部分,该项目旨在为我们的所有产品引入许可。最后,我们将拥有一个完整的许可计划,我们将能够向我们的客户出售支持年度续订、许可级别等的许可。我的问题是我不知道关于实现许可检查器的第一件事。任何人都可以为我指出一些相同的方法吗?有没有我可以学习的开源许可模块?

最佳答案

我使用了部分 key 验证 (PKV) 系统,并且我已经使用 PHP 生成器在 C# 中实现了这一点。谷歌会想出各种命中、解释和实现;但是 Brandon Staggs 写了一个很好的概述(尽管是在 Delphi 中!),在这里:

http://www.brandonstaggs.com/2007/07/26/implementing-a-partial-serial-number-verification-system-in-delphi/

PKV 通过在 key 中编码某些信息(许可证类型、序列号产品、日期等)以及用户名的哈希值和编码信息的哈希值来工作。大部分 key 实际上由多个单字符哈希组成。这个想法是你只检查这些哈希的一个子集。发布的确切子集可以随着时间的推移而更改,以实现某些安全性并防止某些类型的逆向工程。

我还将加密 key 以帮助混淆许可证中每个字符的含义。否则,拥有多个键的人可能会确定某些字符位置意味着某些事情(“哦,字符 3-4 是序列号”)。这可能是你盔甲上的一个缺口!

您开发的任何许可系统都将是不完美的。它将是可破解的,如果您的产品受欢迎,它将被破解。然而,有一个强有力的论点认为,许可证系统的存在是为了让诚实的人保持诚实,并为稍微不诚实的人设置足够的障碍——但没有太多的障碍会造成太大的不便(例如,我通常反对硬件锁定)。那些入侵您系统的人可能无论如何都不会为此付费。

关于c++ - 实现许可检查库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4933984/

相关文章:

objective-c - Objective-C中的类构成问题: Is it possible to inherit a class variable?

ios - GMSMapView 在 iOS 中放大或缩小时显示 GMSMarker 计数

iphone - 如何仅在用户摇动 iPhone 时播放音频文件?

php - 如何双重许可我的开源软件?

c++ - C++插件中的Node.js缓冲区是否终止为空?

c++ - 构建简单 MongoDB C++ 客户端示例时出错

licensing - 软件什么时候变成 "proprietary"?

licensing - CDDL(Suns OS License)和GPL的区别

c++ - 如何删除一维数组

c++ - 来自directshow sampleCB imediasample的ffmpeg音频帧