Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 实现许可证检查库_C++_Objective C_Licensing - Fatal编程技术网

C++ 实现许可证检查库

C++ 实现许可证检查库,c++,objective-c,licensing,C++,Objective C,Licensing,我正在开发一个用于Windows和Mac的小型跨平台产品,该产品是用C++/Obj-C编写的。我被要求为其实现一个许可模块。这项任务是一项雄心勃勃的项目的一部分,该项目旨在为我们的所有产品引入许可。最后,我们将有一个完整的许可证计划,在该计划中,我们将能够向我们的客户销售支持每年更新、许可证级别等的许可证。我的问题是,我不知道实施许可证检查的第一件事。有人能给我指出一些同样的方法吗?有什么开源许可模块可以学习吗?我使用的是部分密钥验证系统(PKV),我已经用PHP生成器在C#中实现了这一点。谷歌

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

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

PKV的工作原理是将密钥中的某些信息(许可证类型、序列号、产品、日期等)与用户名的散列以及编码信息的散列一起编码。大部分密钥实际上由多个单字符哈希组成。其思想是只检查这些散列的一个子集。发布的确切子集可以随着时间的推移进行更改,以实现某种安全性,并防止某些类型的反向工程

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


您开发的任何许可证系统都将是不完善的。它会开裂,如果你的产品很受欢迎,就会开裂。然而,有一种强烈的观点认为,许可证制度的存在是为了让诚实的人保持诚实,并为稍微不诚实的人制造足够多的障碍——但并没有太多的障碍使其变得太麻烦(例如,我通常反对硬件锁定)。那些入侵你的系统的人可能无论如何都不会为此付出代价。

+1最后一段,它永远不会完美,但如果足够难,它就会好起来。我喜欢你的解释,尤其是最后一段。它总结了这一切!